Table of contents
- Getting started
- Dashboard
- Statistics
- Chat sessions
- Documents
- Search queries
- Campaigns
- Sync
- Auto-tags
- Widget
- API keys
- Settings
- Set up WhatsApp
- Leads
- External lead sources
- Automations
- Affiliates
- Surveys
- Reviews
- Abandoned Carts
- Bookmarks
- Products
- Hotel chat
- InsightHub Voice
- Synonyms
- FAQ
- Data protection for your shop
Getting started
Onboarding depends on the platform your website runs on.
For WordPress / WooCommerce
With our WordPress plugin, setup takes two steps:
- Install the InsightHub plugin — from the WordPress admin → Plugins → Install. Activate it.
- Follow the onboarding wizard — the plugin automatically connects to InsightHub, creates the organization and website, imports your products and pages, and sets up the widget. You only need to enter your InsightHub account.
Once the wizard finishes, everything is synced and the AI assistant is live on your site. Use the app at insighthub.sg5.biz to manage statistics, chats and leads.
For Shopify
Shopify connects directly via the Shopify Admin API — no plugin needed:
- Create an app in the Shopify Dev Dashboard — at dev.shopify.com, create an app, add the scopes
read_products,read_content(optionallyread_orders) under API access, and release the version. - Install the app on your store — install it on your shop and approve the data-access prompt. You'll find the Client ID and Client Secret in the app's settings afterwards.
- Connect InsightHub — under Settings → Sync & Filters, pick the Shopify platform, enter your shop domain (
your-store.myshopify.com) plus Client ID and Client Secret, and verify with “Test connection”. InsightHub exchanges the credentials for an access token automatically — no token to manage.
Then run the first sync from Sync (“Sync Shopify” — products, pages and blog posts) and optionally pick an auto-sync interval so changes from the shop flow in automatically. Note: only visible (published) content is synced. Legacy custom apps with a permanent Admin API token (shpat_…) keep working.
Finally, embed the widget: copy the snippet from Settings → Chat Widget and paste it into layout/theme.liquid right before </body> in the Shopify admin.
For Microsoft Dynamics 365 Business Central
Business Central connects directly through the Microsoft API — ideal when your item data lives in the ERP:
- Create an app registration in Microsoft Entra ID — in the Azure portal under Microsoft Entra ID → App registrations, create an app, generate a client secret and grant the Dynamics 365 Business Central API permission (Application) with admin consent.
- Collect the IDs — the Entra tenant ID (Azure portal → Overview), your BC environment (e.g.
Production) and the company ID (the company GUID, readable via the/companiesAPI endpoint). - Connect InsightHub — under Settings → Sync & Filters pick the platform Microsoft Business Central, enter tenant ID, environment, company ID, client ID and client secret, then verify with “Test connection”.
Then run the first sync from Sync (“Sync Business Central”) and optionally pick an auto-sync interval. Note: Business Central provides items (no webshop pages); blocked items are skipped, and you set the price currency in the settings (default: EUR).
For other platforms (Magento, Sana Commerce, custom sites, …)
Without the plugin you register manually and configure sync for your system:
- Register manually — create an account at insighthub.sg5.biz, add an organization and a website.
- Set up sync for your CMS / webshop system — under Settings → Sync & Filters, pick your platform (Magento, Sana Commerce, Shopware …) and enter the API credentials. Then run the first sync from Sync.
Once sync completes, you can embed the widget on your site or use the app to track statistics and chat sessions.
Dashboard
The dashboard surfaces the most important metrics for your website at a glance. Every tile is clickable and takes you to the relevant detail view.
- Chat quality — average rating of AI answers over the last 30 days.
- Search statistics — total queries plus zero-result rate (turns red when the rate is high).
- Answer rate — share of chat questions the assistant could answer.
- Reports — number of email reports sent in the period.
We recommend a weekly glance at the dashboard to catch trends early.
Statistics
Detailed search analysis: query counts, trends over time, top search terms, and zero-result queries.
- Trend chart — zero-result rate over the selected period. A falling line means improving search quality.
- Top queries — most frequent searches with hit counts.
- Who searched? — breakdown by identified customers, known visitors, repeat visitors, and anonymous queries. Click any tile to jump to the filtered detail view.
Use the PDF export button to get the full report as a print-ready PDF — ideal for weekly or monthly reporting.
Chat sessions
Every conversation between an end-customer and the AI assistant is logged here — both widget chats on your website and WhatsApp conversations (when the WhatsApp add-on is active), plus phone calls handled by the Voice assistant (see InsightHub Voice). You see the full message history, linked products, and the rating of each answer.
- Session list — chronological view with filters by period, status, channel (widget / WhatsApp / phone), and rating.
- Detail view — full conversation with the sources used.
- Reply directly — you can jump into any chat and send a message to the customer yourself. For WhatsApp this goes through the official Cloud API; for widget chats your reply appears in the customer's chat window in real time.
- Pause the AI — turning off the AI on a session hands control over to your team. Incoming messages are no longer answered automatically and instead show up in the chat detail for manual handling. Click "Resume AI" to switch the assistant back on.
- Analytics — answer rate, topic distribution, common open questions.
Low-rated answers are a great starting point for expanding your documents.
Documents
Documents are your AI assistant's knowledge base. Add texts, FAQs, how-tos, or product backgrounds that aren't synced from your shop.
- Add — write directly in the editor or paste markdown.
- Edit — update existing documents anytime; changes become available to chat immediately.
- Assign — link documents to specific search queries so they're preferred as sources for those searches.
Common pattern: a single "Shipping & returns" document covers most service questions.
Adding an FAQ
FAQs are the fastest way to cover common customer questions. A well-maintained FAQ collection noticeably reduces the volume of chat and email enquiries.
- Title — phrase it the way a customer would actually ask ("How long does shipping take?" rather than "Shipping times").
- Type — choose FAQ. This tells the assistant the entry is a question-answer pair and prioritizes it for matching search queries.
- Category — pick an existing category or use + New category… to create one. Helps you find things later and groups related FAQs in the widget.
- Content — the actual answer. Keep it concise and concrete; the assistant uses the text verbatim as a source. Markdown (lists, links, etc.) is supported.
Tip: after saving, head to Search queries to check whether the FAQ actually surfaces for the expected search terms — and adjust the title or add tags if it doesn't.
Translating FAQs
If your widget uses several languages (see Languages & automatic translation), FAQs can be maintained per language — visitors then see question and answer in their widget language automatically:
- Per FAQ — the FAQ edit page shows a "Translations" card with a tab per supported language. Empty fields fall back to the original text, so you don't have to translate everything. Auto-translate empty fields fills missing titles and answers via AI; you review and save.
- All at once — on the documents list (FAQ filter), Translate all FAQs starts a background run that only fills missing languages. Existing translations are never overwritten.
- Categories — category names are translated on the "Manage categories" page via the language icon on each FAQ category (with the same auto-translate button). One name per language and category — widget grouping always stays consistent.
Search queries
Complete log of all search queries from your website — with hit counts, timestamps, and (when available) the linked customer.
- Cohort filter — by identified customers, known visitors, repeat visitors, or anonymous queries. Quickly answers who is searching for what.
- Group by customer — collapses all queries from one person, sorted by frequency. Great for the sales perspective.
- Status — new, in progress, done. Helps you work through zero-result queries.
Ignore a product for a search term — when a term returns an off-topic product (e.g. a rat spray for a search for “aphids”), hide it for that exact term via the eye icon on the product badge. The product still shows for every other search. One click restores it — and the assign dialog gathers all ignored products under “Ignored products”.
The three-dot menu on each row lets you archive a query, link it to a campaign, or generate synonyms.
Campaigns
Campaigns link search queries to targeted content — e.g. seasonal promotions or product launches. You can see how many searches landed on a campaign and what conversion it produced.
- UTM tracking — queries from newsletters or social links are auto-attributed to the matching campaign.
- Analytics — reach, answer rate, and top searches per campaign.
- Review — curate the answers the assistant returns for that campaign.
Sync
Connect InsightHub to your shop and keep product data current.
- Full sync — re-ingest all products and static pages. Recommended once at start, then only on major changes.
- Incremental sync — only changed products; runs automatically based on configuration.
- Stock monitor — flags out-of-stock items so the chat won't recommend them (WooCommerce only).
- Shopify sync — on Shopify sites a single “Sync Shopify” card replaces the product/page syncs: one run fetches products, pages and blog posts. The auto-sync interval (Settings → Sync & Filters) keeps it running automatically — from every minute up to every 24 hours; stock and prices stay current too.
- Business Central sync — on Business Central sites the “Sync Business Central” card pulls the items straight from Dynamics 365 (blocked items are skipped). The auto-sync interval keeps the data current here too; BC has no webshop pages.
If sync fails, logs are visible directly on this page. Most common cause: invalid API credentials in Settings → Sync & Filters.
Widget
The chat-and-search widget embeds on your website via a JavaScript snippet. The widget configuration sets appearance and behavior.
- Mode — chat only, search only, or combined. A reservation mode is also available for hospitality.
- Appearance — color, icon color, position (bottom right/left), greeting text, and the product cards' stock-status labels.
- Embed code — grab the ready-made snippet under Settings → Chat Widget (copy button); paste it once before your closing
</body>tag. WordPress sites with the InsightHub plugin don't need this — the widget embeds automatically. - Embedding on Shopify — in the Shopify admin, go to Online Store → Themes → ⋯ → Edit code, open
layout/theme.liquidand paste the snippet right before</body>. Save — the widget appears on every storefront page.
Configuration and content changes update in the widget automatically — no re-embedding required.
Languages & automatic translation
The widget speaks eight languages (German, English, French, Spanish, Italian, Dutch, Portuguese, Indonesian). Under Settings → Chat Widget you choose which of them your site uses:
- Widget language — the default language of the interface (tabs, placeholders, labels, FAQ area).
- Automatic language detection — enable detection and pick the supported languages. Visitors then see the widget in their browser language automatically; everyone else gets the default. Example: German, Dutch and Indonesian supported, English as the fallback.
- Language picker in the widget — with two or more supported languages, the widget header shows a small language dropdown. Someone on a borrowed computer with the wrong browser language can switch manually — the choice is remembered in the browser and takes precedence over auto-detection from then on.
- Custom texts per language — title, subtitle, placeholder, button labels, disclaimer and the stock-status labels can be overridden per language (the "Translations" card on the Widget tab). The Auto-translate button fills empty fields via AI from your default texts — fields you already filled stay untouched; you review and save.
FAQ content can be translated too — see Translating FAQs. The AI assistant's answers follow the customer's language automatically anyway.
API keys
Keys for server-to-server calls to the InsightHub API. Useful if you want to plug your own scripts or third-party systems into InsightHub.
- Generate — create a new named key. The value is shown only once — copy it safely and store it in your password manager.
- Rotate — if compromise is suspected, delete the old key and generate a new one.
Note: fine-grained per-key permissions aren't available right now — every key has the same access rights. Let us know if you need permission separation; happy to build it as a feature.
Settings
Your website's settings are split into several tabs — everything the engine needs to know per site about your shop, your content, and your branding lives here.
General
Name, slug, language, locale (date, currency, timezone), and date formats. Sets how numbers and dates display in the app and the widget.
Sync & Filters
Platform (WooCommerce, Shopify, Sana Commerce, Shopware, …), API credentials, exclude rules, and static-page configuration. Stock monitoring is set up here too.
For the Shopify platform, enter your shop domain plus the Dev-Dashboard app's Client ID and Client Secret (legacy permanent Admin API tokens keep working), verify with “Test connection”, and pick the auto-sync interval. Stock monitoring applies to WooCommerce only — on Shopify the auto-sync keeps stock and prices current.
For sites using the WordPress Plugin (Push), the “Pull plugin settings” button reads the site's live configuration on demand — search-refinement mode, sync and tracking toggles, and the plugin, WordPress, and WooCommerce versions. This lets you see a site's setup without logging into its WordPress admin.
Widget
Appearance, mode, position, and chat features for the front-end widget — see also Widget.
Email & Reports
Contact email, SMTP configuration, and scheduled reports (weekly/monthly). Reports land directly in your inbox.
Search
Fine-tuning of semantic search — minimum score, sorting, fallback behavior. Useful when your catalog is very large and the default behaviour misses results.
AI
LLM model, embedding model, custom API URLs and keys (e.g. to use your own OpenAI or Mistral keys). The system prompt is editable here too.
Channels
Configuration of additional communication channels — currently the WhatsApp Cloud API (paid add-on). Phone Number ID, Access Token and webhook data live here. Step-by-step: Set up WhatsApp. The phone channel has its own Voice tab (also a paid add-on) — see InsightHub Voice.
Templates
Manage email and WhatsApp templates in two tabs.
Email is a single template manager with a section rail: Custom templates (your own freely-named lead emails for chat, automation and manual sending) sit alongside the built-in system emails — Reviews (invitation, reminder, reply), Reports (weekly/monthly), Surveys (invitation) and Chat / Contact (contact and reservation requests). Every system email can be customised per language (subject + body); leaving a field blank uses the built-in default text. Insert placeholders (e.g. name, order number, review link) from the side panel.
WhatsApp templates are submitted to Meta for review; once approved, they can be used in automation rules.
Automation
Rules that automatically act on certain events — e.g. "When a new lead arrives via the form, send a WhatsApp welcome template" or "Mark a lead as lost after 60 days of no response". Conditions, actions, and time windows are freely combinable.
External Storage
Connect S3, SFTP, or similar storage buckets — for example, to import lead CSVs from an external system into InsightHub on a schedule.
Imports
Scheduled lead imports from the configured External Storage — schedule, field mapping, status of the last runs.
Menu
Choose which sidebar items are visible per site. Useful when a tenant doesn't use the Campaigns area, for example, and wants to hide it.
Set up WhatsApp
The WhatsApp add-on lets you automatically send a welcome message to every new lead via the official Meta Cloud API — and reply to inbound messages directly from the app. This guide walks you through the one-time setup. Budget about 45 minutes; some of that is Meta-side review that runs in parallel.
Prerequisites
- A Facebook account (personal is fine) for the business owner — this becomes the Business Manager admin in step 1.
- A phone number that has never been used in WhatsApp (personal or Business), or that you can permanently sign out of WhatsApp first. Landlines work if they can receive an SMS or voice call.
- A company name for the WhatsApp profile — Meta reviews the display name once.
- Optional: a logo (640×640 PNG) for the WhatsApp business profile.
Step 1 — Create a Meta Business Account
- Open business.facebook.com and sign in with the Facebook account.
- Click Create account top left. Enter business name, your name, and a business email. ~5 minutes, free.
- Confirm the business email via the link Meta sends — without it some actions stay locked.
Step 2 — Create a WhatsApp Business Account (WABA)
- In Business Manager: Accounts → WhatsApp Accounts → Add → Create a WhatsApp account.
- Follow the wizard: business details, timezone, currency — Meta creates the WABA automatically.
- Click Add phone number. Enter the number, display name, description. Verify the number via SMS or voice code.
The display name goes into a short Meta review (1–2 business days). You can keep going in parallel.
Step 3 — Grant InsightHub tech-provider access
- In Business Manager: Settings → Accounts → Apps → Add → Connect an app.
- Paste the SG5 InsightHub App ID:
924493397254027. - Go to Settings → Accounts → WhatsApp Accounts, pick your WABA → Assign people and assets → pick the SG5 app and grant Full control.
Step 4 — Generate a permanent access token
The "temporary" 24-hour token shown on the Cloud API setup screen expires and breaks service — generate a System User Token instead:
- In Business Manager: Settings → Users → System Users → Add. Name e.g.
insighthub-wa, role Admin. - Select the new system user → Assign assets → add the WhatsApp account and the SG5 app with Full control.
- Click Generate new token → Expiration Never → Permissions:
whatsapp_business_messagingandwhatsapp_business_management. - Copy the token — it's only shown once.
Step 5 — Paste values into InsightHub
Open Settings → Channels → WhatsApp for your site. You'll need:
- Phone Number ID — visible in the Meta dashboard under WhatsApp → API Setup.
- Business Account ID (WABA ID) — same page, top.
- Display phone number — E.164 format (e.g.
+43 1 234 56 78). - Access token — the System User Token from step 4.
- Webhook Verify Token — any random string. Pick your own.
- App Secret — from the Meta App's "Basic settings" (used to verify webhook signatures).
Save → click Test connection. You should see your verified display name + quality rating.
Step 6 — Register the webhook in Meta
So inbound WhatsApp replies land in InsightHub:
- In Meta dashboard (developers.facebook.com) open your app → WhatsApp → Configuration → Webhooks.
- Callback URL:
https://insighthub-gateway.sg5host.com/v2/webhooks/whatsapp - Verify Token: the same value you set in step 5.
- Click Verify and save → Meta hits the verify endpoint immediately.
- Subscribe to fields: messages (required), optionally message_status for delivery reports.
Step 7 — Templates for outbound
WhatsApp only lets you message a lead who has never written to you via a Meta-approved template. InsightHub ships lead_welcome_generic as a default. On first setup, create the template once under Templates → WhatsApp and click "Submit to Meta" for review. UTILITY templates typically clear review in 1–3 business days.
Once approved, set up an automation rule in Settings → Automation (e.g. "Welcome new leads") to send the template on lead.created.
Opt-in & GDPR
Meta requires a documented opt-in before you send marketing messages. For transactional UTILITY messages (e.g. welcome after form submit), an "I agree to be contacted via WhatsApp" checkbox on the lead form is enough. Store the checkbox state — Meta can ask to see it during audits.
Rate limits & quality rating
Every newly verified number starts at Tier 1: 250 recipients per 24h. With good quality (low block + spam-report rate) Meta auto-promotes you — 1k, 10k, 100k. Watch the quality rating in the Meta dashboard; a red rating throttles you.
Common issues
- "Test connection" fails with OAuthException — the token expired or doesn't have all permissions. Regenerate it per step 4.
- Template rejected with "number of params" on send — the variable mapping in the automation rule doesn't match the
{{1}}, {{2}}placeholders. Open the rule, fill in each position, save. - Webhook receives no messages — the Verify Token must be exactly identical in InsightHub and Meta. The app must subscribe to the messages field.
- Token expires every 24h — you copied the temporary Cloud API setup token, not the System User token. Repeat step 4.
Need help with setup? Email [email protected] — we'll do it together in a 30-minute call.
Leads
Leads are prospects who reached you via form, chat widget, WhatsApp, import, or manual entry. The Leads area is your central lightweight CRM — from first inquiry to closed deal, all in one place.
Status & workflow
Every lead has a status — changeable inline via dropdown in the list:
- New — just arrived, untouched
- Attempted — first response sent
- Initial call — meeting or call has happened
- Awaiting documents — lead still needs to send something
- Customer — deal closed
- Lost — no deal, with optional reason tag
Direct actions from the lead detail
- Email directly — reply editor opens inside the lead, sent via your SMTP. Lead's replies come back into the same lead thread automatically (IMAP polling).
- WhatsApp directly — if the WhatsApp add-on is active, message the lead with one click; inbound replies appear in the lead detail in real time. Also works outside the 24-hour service window via an approved template.
- Upload files — drag-and-drop documents onto the lead (quotes, contracts, scans). Attachments on inbound emails are automatically linked to the lead too.
- Notes & reminders — internal memos and callback reminders with date/time. Due reminders trigger notifications. When adding an activity note there is an "Also set last contact to now" checkbox — handy after a phone call, which is contact InsightHub cannot observe on its own.
- Assign owner — hand a lead over to a team member. Reply, document, and WhatsApp notifications then go to that person.
Overview & filters
- Sort by creation date, status, last contact, last updated
- The "Last Contact" and "Updated" columns mean different things: "Last Contact" is when you last sent something out (email or WhatsApp) and can also be set by hand on the lead, e.g. after a phone call. "Updated" is when anything on the lead last changed — status, assignee, fields or a new note.
- Filter by source, owner, campaign, status
- AJAX search over name, email, phone, company
- "Created via" column shows the origin (form, manual, import, WhatsApp, API)
Activity timeline
The lead detail has a chronological timeline on the right: status changes, emails, WhatsApp messages, uploaded documents, notes, automation-rule actions. Every team member sees at a glance what has happened on the lead so far.
External lead sources (Facebook, Google Forms, Typeform, & co.)
Instead of manually exporting CSVs from Meta Lead Ads, Google Forms, Typeform, Mailchimp, HubSpot or other tools, you can stream leads into InsightHub in real time. InsightHub exposes a single ingestion endpoint (POST /v2/leads) that any external source can call directly over HTTP.
Most sources do this with a webhook. Google Forms has none, and needs a small script on the form instead — the endpoint is the same either way. See Google Forms.
Why webhooks: source tools deliver events in real time over HTTP-POST — directly from the tool itself, through an integration service, or from your own backend code. InsightHub's endpoint accepts them all in one common JSON schema. When a new source appears tomorrow, you just point its webhook URL at the InsightHub endpoint; nothing on the endpoint side has to change.
Endpoint & JSON schema
Every webhook call is a POST to the gateway URL with an X-API-Key header and a JSON body.
- Method:
POST - URL:
https://insighthub-gateway.sg5host.com/v2/leads - Header:
X-API-Key: ih_…your-key… - Body type:
application/json
Example body (Facebook Lead Ads):
{
"name": "Max Mustermann",
"email": "[email protected]",
"phone": "+43 660 1234567",
"source": "fb",
"campaign": "<ad-id-from-meta>",
"external_id": "<leadgen-id-from-meta>",
"raw_data": { "...full original payload..." }
}
Only one of email or phone is required — everything else is optional. The full original payload lands in raw_data so nothing the source delivers gets lost.
Setup — step by step
- Create an API key in InsightHub — Site → API Keys → Create new key → scope Public. Copy the raw key once (it isn't shown again). Right below the list you'll find the example curl call with the correct endpoint URL.
- Open your source tool and configure a webhook on the lead event (Typeform: "Connect" → "Webhooks"; Tally: "Integrations" → "Webhooks"; Calendly: "Workflows" → "Webhook"; etc.).
- Set URL and header as above. Map the body fields to whatever the source delivers.
- Save & test. Trigger a test submission in the source tool.
- Verify in InsightHub: within seconds the lead shows up in the Leads list with the configured Source and Created via: API.
Example sources
The same pattern works for every source that supports webhooks:
- Facebook / Meta Lead Ads — Page-level lead webhook → POST directly to
/v2/leads. - Typeform — per-form webhook → create a lead on every new response.
- Tally — webhook integration → map → POST.
- Mailchimp — webhook on subscribe event → newsletter signup becomes a lead.
- HubSpot / Pipedrive / Salesforce — workflow/automation on new contacts / deals → mirror into InsightHub.
- Calendly / Cal.com — webhook on booked appointment → lead with the booking details in the
raw_datafield. - Google Forms — has no webhooks; uses an Apps Script on the form instead. See Google Forms below.
Google Forms
Google Forms is the one significant exception: it has no webhooks of its own. Instead a small Google Apps Script is attached to the form and posts every response to the same /v2/leads endpoint. Nothing changes at the endpoint — only the bridge leading to it.
The script runs on Google's servers under whichever account installs it. Respondents never see it, and the API key never reaches a visitor's browser.
Script: google-forms-to-leads.gs.txt — open it, select all (Ctrl + A) and copy.
Step 1 — Paste the script
Open the form → ⋮ (top right) → Apps Script. This matters: open the editor from the form, not from the linked spreadsheet — only the form-bound event exposes the response ID that prevents duplicate leads.
In the editor, replace the myFunction() placeholder entirely: Ctrl + A, paste, Ctrl + S. No Deploy is needed — triggers always run against the saved code ("Head").
Step 2 — Add the credentials
In the Apps Script editor: ⚙ Project Settings → Script Properties → add two entries:
GATEWAY_URL=https://insighthub-gateway.sg5host.com/v2/leadsAPI_KEY= a Public-scope key from Site → API keys (see step 1 of the setup above)
Spelling has to match exactly — the script reads those two names literally and otherwise reports "GATEWAY_URL or API_KEY missing".
Step 3 — Add two triggers
In the editor sidebar: ⏰ Triggers → Add Trigger, twice:
onFormSubmit— event source From form, event type On form submit. Sends each new response immediately.retryFailedSends— event source Time-driven, Minutes timer, Every 15 minutes. Re-sends anything that failed.
Under "Failure notification settings" choose Notify me immediately rather than the "Notify me daily" default — otherwise up to 24 hours can pass before anyone learns that leads have stopped arriving.
Google asks for authorisation on the first save; the warning about connecting to an external service is expected — that is the POST to the gateway.
Field mapping
At the top of the script, TITLE_TO_FIELD maps question titles to lead fields. Matching is deliberately loose: case, spaces, hyphens and punctuation are all ignored, so "E-Mail", "Email" and "e mail" hit the same entry.
const TITLE_TO_FIELD = {
'Name': 'name',
'First name': 'first_name',
'Last name': 'last_name',
'E-Mail': 'email',
'Telefon': 'phone',
'Organization': 'company',
'Ihre Nachricht': 'message',
};
When the form asks for first and last name separately, prefer first_name and last_name over the single name: the salutation builders and DocuSeal templates read the structured columns, and one name string cannot be split reliably.
An unmapped question is never lost — it reaches raw_data under its literal title. That untidy key is precisely how you notice a mapping line is missing.
Two further lists in the script: TITLE_TO_PROPERTY assigns stable names to answers that have no lead field of their own (a dropdown, say), and APPEND_TO_MESSAGE appends an answer underneath the customer's own message — useful for qualifying details that should be visible on the lead at a glance.
Filling custom fields
Answers can also be written straight into the site's custom fields instead of only sitting in raw_data. TITLE_TO_CUSTOM_FIELD maps a question title to the field's slug (Site → Settings → Custom fields — the slug, not the label):
const TITLE_TO_CUSTOM_FIELD = {
'Budget': 'budget',
'Type of Car': 'type_of_car',
};
For select and multi-select fields that is not enough: the form shows labels while the field expects values, matched exactly and case-sensitively. CUSTOM_FIELD_VALUES translates between the two, and MULTI_SELECT_CUSTOM_FIELDS lists the fields that must receive a list:
const CUSTOM_FIELD_VALUES = {
type_of_car: { 'Truck': 'truck', 'Mini Van': 'mini_van' },
};
const MULTI_SELECT_CUSTOM_FIELDS = ['type_of_car'];
Careful: a wrong slug or an unknown option value makes the engine reject the entire lead with 422 — not just that one field. Unknown slugs are refused deliberately, so that no data is lost silently. The script treats 4xx as final and does not retry, so the submission would be gone. Check slugs and option values against the site's field definitions before going live, and make one test submission.
What arrives on the lead
Alongside the mapped fields, every lead carries three identifiers in raw_data — the same names Facebook Lead Ads leads use, so one automation filter works across channels:
form_id— which form. The routing key when several forms feed the same site.platform—google-forms.external_id— which response. Unique per submission and permanent.
If leads stop arriving
The retry trigger only rescues sends that were actually attempted. If the trigger stops firing altogether — deleted, account suspended, authorisation lapsed — responses pile up quietly in the form with no error anywhere.
That is what backfillAll is for: select it in the editor and run it. It replays every form response and cannot create duplicates, because InsightHub merges on external_id. Run it as often as you like.
Tip: install the script under a shared company or service account rather than a personal one. The trigger runs as the account that created it — if that account is ever deactivated, delivery stops without warning.
Deduplication & idempotency
InsightHub dedupes incoming leads in this order:
external_id— when set, this is the primary lookup. Same external_id → existing lead is merged, never duplicated.- Email (case-insensitive) — falls back to this if no external_id.
- Phone (whitespace-trimmed) — last-resort match.
On a hit, missing fields on the existing lead are filled from the new payload; already-set values stay untouched (especially status, notes, value, and assignee — those reflect your team's working knowledge and should never be overwritten by a re-delivery). Re-running the same webhook is therefore safe: the same external_id returns the same lead row on subsequent attempts.
Automations
The visual flow editor lets you build multi-step automation workflows: connect nodes on a canvas to define what happens on an event — e.g. “New lead → welcome email”. Flows react automatically to events and replace repetitive manual steps. (Beta)
Triggers
Every flow starts with exactly one trigger node. The available triggers are currently lead-based — more event types will follow:
- When a new lead is created — fires immediately when a lead arrives via form, chat, WhatsApp or API.
- When a lead is stale — time-based: a lead inactive for X days (since it was created, or since the last outbound email). Checked hourly.
- Manual — never fires automatically; only when you run the flow by hand from the lead detail.
Steps & actions
From the trigger you connect any number of steps:
- Wait / Delay — pauses the flow for minutes, hours or days.
- Send Email — pick a saved template or write the subject & body inline. Placeholders like
{{lead.name}}are filled in. - Send WhatsApp — send a Meta-approved WhatsApp template (with variables). Requires the WhatsApp add-on.
- Set Status — change the lead status (e.g. to “Lost” to auto-close).
- Set Lead Field — set a lead field to a fixed or placeholder value (e.g. Country = “AT”).
- Webhook — POST/PUT/PATCH to an external URL with your own body and headers.
- Send review request — creates a tracked review invitation for the contact. The Mode picks “Invitation” (the first request) or “Reminder” (a follow-up on the invitation already created — skipped automatically if the person already reviewed or opted out). This lets the flow own the whole cadence:
invitation → wait → reminder. - Filter / Branch — branches the flow on a condition (e.g. “Created via ≠ Manual”) into a true and a false path.
- A/B Test — splits the flow across weighted variants.
Building a flow
- Create a New automation and name it.
- In the editor, add steps from the left palette (click or drag & drop onto the canvas) and connect the node handles.
- Click each node and configure it in the right panel (template, delay, status, condition …).
- Save — then, once everything is right, enable the automation with the toggle. Disabled flows never run.
Note: existing single-step rules keep running unchanged — the flow editor adds to them, it doesn’t replace them. If you enable a flow that recreates an old rule, switch the old rule off so a lead isn’t processed twice.
Affiliates
External people or companies who brought a lead in and get a commission for it. For each lead you can record who brought it in and with which commission share.
Creating an affiliate
- Name or company — either the company or both first and last name (or both). At least one of them is required.
- Contact details — email and phone (optional, useful later for payout statements).
- Default commission — either percentage of the deal value or a fixed amount per converted lead. The value is suggested when the affiliate is attached to a lead and can be overridden per lead.
- Notes — free text, e.g. agreements or context.
- Active switch — inactive affiliates stay attached to historical leads but are hidden from the picker for new leads (preferred over deletion).
Attaching to a lead
On the lead detail page, an "Affiliates" card appears in the right rail. "Add affiliate" opens a picker with every active affiliate. After selection the default commission is prefilled — the share can be adjusted per lead. Multiple affiliates per lead are supported (e.g. introducer + closer).
List & filter
- List view shows every affiliate with attached lead count, default commission, and active status.
- The leads list has an affiliate filter so you can see which leads a specific partner brought in.
- Deleting an affiliate that still has linked leads triggers a confirm — soft-disable is recommended over hard delete so analytics stay intact.
Note: actual commission computation and payout statements belong to Phase 2. Phase 1 captures the lead ↔ affiliate relationship with share cleanly — enough for CSV export and manual payouts.
Surveys
Build customer surveys and deliver them wherever your customers are: as a pop-up on your website, via a shareable link, by email — or automatically after a purchase on the shop's thank-you page. Answers land in the app and feed the analytics. Each survey's look and flow is built in the visual form designer.
- Multiple question types (single & multiple choice, star rating, yes/no, free text)
- Charts and export
Form designer
Every survey can be designed via drag and drop — from a plain form to a multi-step wizard. The designer opens straight from the surveys list.
- Sections & wizard — questions are grouped into sections; each section becomes one step of the fill-out wizard with a progress bar. Sections can be hidden without deleting them. The thank-you page is always the final step and is configured right in the designer (icon, headline, text).
- Layout & elements — one- or two-column questions, icons per question and per answer option, star and card styles for ratings and choice questions, plus an info-text element for headings and explanatory copy with its own font sizes.
- Conditional follow-up questions — a question can appear only when a previous answer matches (e.g. "What was missing?" only after a 1–3 star rating). Works in the popup, via link, and on every other channel.
- Design & branding — colors and font per survey. The default is "use branding": the survey follows the site's branding (Settings → General) or the organization-wide brand — including a custom font or an uploaded font file. Any survey can still set its own colors and fonts.
- Preview — live preview in its own window with a desktop/mobile toggle, including unsaved changes.
Post-purchase survey (WooCommerce)
After an order completes, the thank-you page shows a feedback banner ("Your opinion matters!") with Yes/No. Yes opens the selected survey right there as a popup — the customer's email is already pre-filled. No dismisses the banner with a short thanks.
- Set-up — enable it under Settings → Surveys, pick an active survey and set the two re-ask intervals: ask again after "Yes" (default 180 days) or after "No" (default 60 days).
- Prerequisite — the WordPress plugin (v2.38+) needs Order tracking and the banner switch on its Surveys tab enabled. The switch is off by default (opt-in) — the banner only appears once both the shop and the app have it on. The banner texts (title, question, both buttons, thank-you line) can be customized on the same tab; empty fields fall back to the bundled default in the site language (DE/EN, plugin v2.39+).
- Not pushy — throttled per customer (email address): someone who answers is only asked again once the interval has passed; someone who ignores the banner simply sees it again on their next order. Reloading the thank-you page shows the same banner without creating a second prompt.
- Insights — under Statistics → Surveys, the "Post-purchase banner" section shows per customer when they were asked, whether and when they agreed or declined — and when the next ask is due.
Control: Settings or Automation
The Control field under Settings → Surveys decides who determines whether and which survey the banner offers:
- Settings (default) — the fields below decide: one fixed survey for every order plus the two re-ask intervals. The right choice for most shops.
- Automation (flow) — an automation decides per order. You build a flow with the "Order — Thank-you page" trigger and the Show survey banner node, where you pick the survey (and optionally custom re-ask intervals). Before it you can add Filter nodes (e.g. only orders above a certain value or in a certain category) and A/B test nodes (test two surveys against each other). Because the flow runs synchronously as the order comes in, only these steps are allowed — delays, emails etc. don't exist here. In this mode the survey and intervals come entirely from the flow (empty intervals = 180/60 days); the settings fields are hidden.
The quickest start is the "Post-purchase survey banner" template in the "New Automation" dialog — it seeds the trigger and banner node for you. Newly created flows start disabled: pick the survey in the node, then enable the flow from the automations list. The per-email throttle and the reload behaviour apply unchanged in both modes.
Reviews
Automatically collect customer reviews after a purchase or conversion, moderate them in a dedicated inbox, and reply — optionally with an AI-drafted response. Enable and configure everything under Settings → Reviews. (The feature must be enabled for your site.)
When an invitation is created
There are two triggers — each creates exactly one invitation per event:
- Shop order — when an order is completed (WooCommerce, Shopify, or Business Central), the customer receives the invitation after a configurable waiting period. A later cancellation/refund suppresses the invitation.
- CRM conversion — when a lead moves into a status marked as “won”, the associated person is invited. This makes review collection work for lead-only / service sites without a shop, too.
Collection mode: Built-in or Workflow
The Collection mode decides who drives sending:
- Built-in (automatic) — the default. InsightHub schedules the invitation after “Invite after (days)” and exactly one reminder after “Reminder after (days)” if no review was submitted by then.
- Workflow (automation) — the built-in scheduler stands down; an automation drives the whole cadence instead. You build a flow with the “Order — Completed” trigger and the Send review request node — once in Invitation mode, then after a delay node again in Reminder mode. The delay nodes control the timing; the “Invite after” and “Reminder after” fields are hidden in this mode because they no longer apply. Chaining more reminder nodes builds a multi-step follow-up sequence. The order trigger knows two events: Completed only fires once the shop reports the order as completed (WordPress plugin v2.30+) — the right choice for review requests; Placed fires immediately when the order comes in, regardless of its status. Cancelled or refunded orders stop a scheduled invitation and its reminder in workflow mode too.
In both modes the throttle (max one invitation per email within the window) and the review-link validity still apply. A reminder is never sent once the person has reviewed, opted out, or clicked a review link.
The review inbox
Incoming reviews land in an inbox similar to the Helpdesk:
- Filters & To-Do — filter by stars, approval status, and channel; low ratings (up to a configurable star threshold) are auto-flagged as To-Do.
- Approve — moderate each review before it counts as “Approved”.
- Reply with AI — the assistant drafts a fitting reply that you review, adjust, and publish.
- Sub-questions — optional sub-ratings (e.g. Delivery, Product, Customer service).
Settings & legal
- Consent (UWG §7) — the default is “consent required”; alternatively “legitimate interest”. Invitation and reminder emails always carry an opt-out link — an opt-out is honoured permanently.
- Plugin switches — the WordPress plugin’s Review tab separates two things: whether the shop takes part in review requests at all (off = no order from this shop ever triggers one, in any consent mode), and whether the checkout shows the consent checkbox. Hide the checkbox only in “legitimate interest” mode — requests then go out without asking; under “consent required” a hidden checkbox means nothing is ever sent.
- Review targets — the internal review page and/or external targets such as a Google review link. Clicks are tracked and can stop the reminder.
- Email templates — subject and body for invitation, reminder, and reply with placeholders; the opt-out link is mandatory.
- Review language — the language of the review emails and the public review form: German, English, or (default) the site language from Settings → General.
- Reply author (public) — controls who is named as “Reply from …” on your website when you answer a review: the shop name (default), a custom name (e.g. “SG5 Support”), or — only as an explicit opt-in — the staff member’s real name. By default no staff names are published.
Show reviews on your website (shortcode)
With the WordPress plugin you can display collected reviews right on your site — a slider with a rating summary and individual review cards. Add the shortcode to a page or widget:
[sg5_reviews]
The slider shows the overall score (e.g. “4.73 – Excellent”), a sliding row of review cards (clicking a card opens the full review including your published reply) and a “verified” badge for shop orders. Only approved reviews are shown — you approve each review in the inbox. No customer names or email addresses are published. The matching schema.org markup (AggregateRating/Review) is emitted automatically for search engines.
Optional attributes: [sg5_reviews limit="20" min_rating="1" title="Our reviews" intro="What customers say about us" intro_text="…" color="#e8730c"] — limit caps the cards, min_rating shows only cards at or above that star rating, the rest control the heading, intro block and star colour.
The heading, side title and side text can also be managed centrally in the WordPress plugin — Settings → SG5 InsightHub → Review (an empty field hides that element). The same tab hosts the review requests and the checkout consent checkbox — default label: “Dürfen wir Sie per E-Mail um eine Bewertung bitten?”.
Abandoned Carts
Capture the carts shoppers fill but never check out — and win them back with automated reminder emails that include a one-click cart-restore link. Fully GDPR-conformant: reminders only ever go to customers who explicitly opted in at checkout. (Beta feature — must be enabled for your site; capture is additionally switched on in the WordPress plugin.)
How capture works
WooCommerce has no cart API, so the WordPress plugin captures the cart right on the store: on every change (item added/removed) and when the checkout page opens. You enable capture under Settings → SG5 InsightHub — without that toggle, nothing is captured.
- Logged-in customers — email and name come securely from the server; the consent choice is stored on the customer account at purchase and carries over to future carts.
- Guests — as soon as an email address is typed at checkout it is attached to the cart. Consent is a dedicated checkbox below the billing fields (label configurable in the plugin). Without an email the cart stays anonymous.
The exact consent wording shown is stored with the cart — you can always prove what was agreed to.
The checkout checkbox itself is optional (plugin toggle “Show consent checkbox at checkout”, on by default): hide it only where no opt-in is legally required — e.g. a shop outside the EU, paired with “Consent required” off in the app — or when the exit-intent popup is your only consent surface. With “Consent required” on, carts captured without the checkbox are counted but never emailed.
Statuses & dashboard
Under Abandoned Carts in the sidebar you see every captured cart with KPIs (abandoned and recovered value, recovery rate) and a period filter. A counter on the menu item shows how many carts are currently sitting abandoned. Each cart moves through these statuses:
- Active — the cart is being filled right now.
- Abandoned — no activity for a configurable time (default: 60 minutes).
- Recovered — the shopper did buy after all: an order from the same email address within 14 days that actually contains items from the saved cart. The recovery date shows in its own column.
- Expired — an order arrived, but it shared no items with the saved cart (the shopper bought something else). The cart is closed without counting as recovered — so your recovery numbers stay honest.
Shoppers who simply order in one go never clutter the list: a cart that is still active and was never reminded disappears silently the moment its order comes in. Each row also shows the captured phone number, the reminder history (how many were sent, was the restore link clicked?) and — for system administrators — a delete button for individual rows.
Reminder emails via automations
You build the recovery sequence in the automation editor — with the new “Cart abandoned” trigger. A typical flow: trigger → wait (e.g. 2 hours) → email; add more wait/email steps for a multi-touch sequence. Inside the email you can use {{cart.*}} placeholders (e.g. cart value or the item list).
Every reminder automatically carries two links: the restore link, which rebuilds the saved cart in the shop and leads straight to checkout, and an opt-out link that unsubscribes the recipient from further cart reminders. Before every send the system re-checks: is the cart still abandoned? Is consent (still) in place? Is the address not opted out or bounced? Only then does it send.
Fastest start: pick the ready-made “Cart recovery” starter in the automation template picker. It waits two hours, then checks whether a phone number was captured — if yes, it sends a WhatsApp message and the reminder email; if not, just the email.
Reminder emails default to the built-in “Cart reminder” template — editable in German and English under Settings → Templates → E-Mail; the email node’s template picker lets you switch to any of your own templates at any time.
WhatsApp reminders: cart flows can also send WhatsApp template messages to the captured phone number (guests: the billing phone; logged-in customers: the account phone — carried over on restored carts too). WhatsApp must be connected and the template approved by Meta; the {{cart.*}} placeholders — including the restore and opt-out links — work there as well, and the same pre-send checks apply. One thing to mind: the default consent label speaks of e-mail — widen the wording in the plugin when you enable the WhatsApp branch.
Exit-intent popup (optional)
Optionally, enable the exit-intent popup in the plugin (off by default): when a guest with a filled cart moves to leave the page, a small dialog asks for their email to save the cart. Submitting counts as explicit opt-in and is recorded as such.
Privacy & retention
The feature is built for data minimisation. All controls live in the app under Settings → Abandoned Carts:
- Capture abandoned carts (master switch, default: on) — switched off, nothing new is captured at all; already-captured carts still follow their lifecycle and retention.
- Consent required (default: on) — a cart without consent is counted but never emailed. Only switch this off where no opt-in is legally required (e.g. a shop outside the EU) — reminders then go out without consent.
- Exclude anonymous carts (default: off) — when on, carts without an email address are not stored at all.
- Abandon after (minutes) — when an inactive cart counts as abandoned (default: 60).
- Retention (days) — after this, carts are automatically and permanently deleted (default: 60).
Data-subject requests work through the familiar WordPress → Tools → Privacy screens: export and erasure both cover the captured carts. The plugin also suggests ready-made wording for your privacy policy under Settings → Privacy.
Bookmarks
Queries, sessions, or documents you want to revisit. Click the bookmark icon to save one. The sidebar Bookmarks link gives you a central list with filters and status.
Helpdesk
Tickets opened from the chat — or directly by your customers — land here. The AI assistant opens a ticket automatically when it can't answer a question well, or when the visitor explicitly asks for human contact.
- Status flow — open, in progress, resolved, closed.
- Reply directly from the app — replies travel by email; the visitor sees the conversation through a secure visitor link.
- Types — question, problem, feedback, feature request.
- Notifications — new tickets and replies trigger emails to the contact address.
Toggle the helpdesk inside the widget under Widget.
Products
Read-only view of all products synced from your shop. Useful for checking what the engine actually indexed — handy when troubleshooting sync issues or missing hits.
Filters by availability, category, and date help inspect single items quickly.
Hotel chat (rooms, tours & availability)
The chat assistant also works for hotels and resorts: it knows rooms, tours and service packages, checks availability live, and hands guests over to the booking page — bookings never happen in the chat itself.
- Product types — WooCommerce product types such as Room, Tour package or Service package sync along. The assistant keeps them apart: asking for rooms never surfaces services. The app's product list can filter by type.
- Live availability — with the SG5 PMS plugin (v1.3.0+) on the WordPress site, the assistant checks availability for concrete dates: it asks for the date range and number of guests and shows available rooms with photo and price. Enabled via the Hotel PMS switch in the site settings.
- Booking link — once the guest has decided, the assistant asks whether they want to book and shares the booking-page link — with dates and guest count already pre-filled. The chat never collects names or email addresses for bookings.
- Room data — capacity ("a room for 6 people?"), facilities and amenities from the PMS are available to the assistant as structured data.
- Labels — the product-card badges can be renamed on the Widget tab, e.g. "Available"/"Fully booked" instead of "In stock"/"Out of stock" — per language too (see Languages).
InsightHub Voice — the AI assistant on the phone
With InsightHub Voice, the same assistant that answers in the chat widget also takes phone calls: it answers questions about products, prices and availability from your live shop data, captures callback requests as leads and hands calls over to your team when needed — around the clock. Voice is a paid add-on: SG5 enables it per website, after which the Voice tab with all options appears in the site settings.
Setup
- Phone number — SG5 assigns a number for the assistant. Simply forward your existing number to it, e.g. outside opening hours or when nobody picks up.
- Enable phone assistant — the switch on the Voice tab puts the assistant into service or pauses it. Calls to a paused number are not answered.
- Greeting — the first sentence callers hear, e.g. "Guten Tag! Hier ist der Assistent von … Wie kann ich Ihnen helfen?" Without your own text the assistant greets with your website's name.
- Filler sentence — spoken while the assistant looks something up ("Einen Moment bitte, ich schaue kurz nach."), so callers never hear dead air.
- Voice — provider and voice for the speech output; the default is a natural German voice. SG5 helps with special requests.
- Transfer targets — phone numbers for reception, sales and support. If a caller asks for a person or the assistant cannot help, it transfers the call there. Without a configured number it offers a callback instead.
Phone prompt
On the phone the assistant can have its own system prompt. If the field is empty, it uses your chat prompt from the AI tab in phone mode. With your own text, the phone prompt replaces the chat prompt on calls only — useful when your chat prompt mentions links, product cards or forms that make no sense on the phone. The template "Telefon – Webshop (DE)" is a good start; "Copy chat prompt" copies your existing prompt for editing. The spoken format (short sentences, at most two options, no links) and the facts-only rule (only data from your shop) are always enforced on top. The preview shows what the phone assistant actually receives.
What happens during and after a call
- Grounded in facts — prices, availability and product data come only from your synced shop data, never from the language model's memory. If the assistant doesn't know something, it says so and offers a callback.
- Callbacks as leads — when a caller wants a callback, a quote or advice, the assistant asks for their name and creates a lead with source "Voice". Your automations for new leads apply as usual.
- Call transcript — every call appears as a session with channel Phone under Chat sessions, including the recognised questions, the answers and the caller's number.
- No audio recording — calls are not stored as audio; only the text transcript is kept.
Synonyms
Synonyms improve search by linking related terms — e.g. "sneaker" and "trainer". Maintain them manually or let the AI suggest them.
- Bidirectional (both terms find the same hits) or unidirectional (term A finds B, but not vice versa)
- Sources: manual, AI suggestion, or imported
FAQ
How does billing work?
InsightHub bills on a subscription — monthly or yearly. Tiers differ by request volume, document count, and chat sessions. Details are under your organization's billing area.
Can I export my data?
Yes. Statistics and search queries export as PDF and CSV. On request you can also get a full data export for your website.
How do you handle GDPR?
InsightHub is built GDPR-compliant. The data processing agreement (DPA) is here. End-customer data is hosted in the EU.
Can I use my own AI provider (OpenAI, Mistral)?
Yes. In AI settings you can plug in your own API keys. Request costs then flow through your account directly.
Can I manage multiple websites?
Yes. An organization can hold any number of websites. Each has its own data, configuration, and statistics.
The widget doesn't appear — what now?
Check three things: (1) is the snippet embedded before </body>, (2) is your domain whitelisted in widget settings, (3) has the first sync finished?
A sync is failing. What now?
Most common cause: invalid API credentials in sync settings. Logs are right on the sync page. If the error persists, email us at [email protected].
How do I switch language?
The profile menu (top right) lets you switch between English and German. The setting applies to the app and all email reports.
Do I need a technical team?
Setup just requires embedding the widget snippet on your website once. Everything else — sync, configuration, analytics — runs in the app.
Data protection for your shop
InsightHub processes your website visitors' data on your behalf. Under data-protection law you are the controller and SG5 is your processor. Three things are needed for a compliant setup:
- Data Processing Agreement (DPA) under Art. 28 GDPR with SG5 — see DPA.
- Add a section to your privacy policy about InsightHub — ready-made template below.
- Cookie banner: list the
ih_vidcookie in your consent tool under the "Statistics" category. It is only set after consent.
Note: this template is a starting point, not legal advice. Have it reviewed by your DPO or lawyer before publishing.
Template for your privacy policy
Copy the following section into your privacy policy (e.g. after your "Cookies" section). Adjust the company name, address and — if applicable — the AI provider to match your shop's configuration.
InsightHub — AI chat, search analytics & campaign tracking
Our website uses InsightHub, a service provided by SG5 Digital Solutions, Vienna (Austria), as a processor under Art. 28 GDPR. Processing and storage take place on servers within the EU (Germany).
AI chat. We process your chat messages and the assistant's replies, a session ID and the message timestamps. To let the conversation continue, the session ID and conversation history are stored locally in your browser (localStorage); they persist after you close the tab or browser and are automatically deleted after 7 days. Any personal data you voluntarily enter in the chat (e.g. name, email) is also stored. Responses are generated by an AI language model from Mistral AI SAS, Paris (EU). Legal basis: Art. 6(1)(f) GDPR.
Search analytics. When you use our search, your search terms and the number of results are logged to improve search and identify common queries. Legal basis: consent (Art. 6(1)(a) GDPR) or legitimate interest (lit. f).
Campaign tracking. If you have consented, we record campaign parameters (utm_source, utm_medium, utm_campaign, etc.), the page visited and the referring URL. When you submit a form, the data you provide (e.g. name, email, phone) is stored as a conversion and attributed to the campaign. An anonymous visitor ID (cookie
ih_vid) is used for this. Legal basis: consent (Art. 6(1)(a) GDPR).Cookies / storage.
ih_vid— anonymous visitor ID linking searches and campaign visits (Statistics category), lifetime 1 year, first-party. The cookie is only set if you have consented to the "Statistics" category. If you use the chat, the conversation history is stored in your browser'slocalStorage(so the conversation can continue) and automatically deleted after 7 days.Recipients / processors. SG5 Digital Solutions, Vienna (Austria), technical operation · Mistral AI SAS, Paris, France (AI language model, processed in the EU). [Only if enabled for your shop: OpenAI, L.L.C., San Francisco, USA — transfer to the USA based on Standard Contractual Clauses under Art. 46(2)(c) GDPR.]
Retention. Data is stored for as long as necessary for the stated purposes.
Your rights. You have the rights of access, rectification, erasure, restriction and objection (Art. 15–21 GDPR). Contact: [your contact details].
Customisation notes
- AI provider: by default the chat runs on Mistral AI (Paris, EU) — no transfer to the USA. Only list OpenAI (USA, Standard Contractual Clauses) if OpenAI is explicitly enabled for your shop.
- Retention: deliberately open ("as long as necessary"), since no fixed automatic deletion interval is guaranteed.
- Hosting: processing and storage take place in the EU (Germany).
