Business goals
Everything else in the dashboard measures the assistant: conversations, leads captured in chat, questions it could not answer. None of that is your scoreboard. A shop counts orders. A consultancy counts enquiries. A membership site counts signups.
Goals put your scoreboard in the dashboard, and then answer the question the rest of the reporting cannot: of the results you got, how many came from visitors who had talked to the assistant first?
What a goal is
Section titled “What a goal is”A goal is one thing that counts as a win on your website, with a name you chose and a place in your own priority order. The Impact report leads with whatever you put at the top.
Each goal is counted from one or more rules:
| Rule | Counts when |
|---|---|
| A form | that form succeeds on your site |
| A page | a visitor reaches it (a thank-you or confirmation page) |
| An event | your analytics layer fires it, e.g. purchase |
| A contact click | somebody clicks a tel: or mailto: link |
You can also give a goal a value: a fixed amount per completion, or whatever the order itself reports.
You should not have to configure this
Section titled “You should not have to configure this”When the crawler reads your site it also notes where visitors could complete something: the forms and which builder made them, the confirmation pages, the phone and email links, whether the shop runs WooCommerce or Shopify. So the first time you open Goals, it already proposes what it found.
Nothing is counted until you say so. Accepting a proposal also counts the matching events from the last 30 days, so the chart has history the moment you approve it rather than starting empty.
Refusing a proposal is worth doing rather than ignoring it. A refusal is remembered, the suggestion does not come back, and shapes that many organisations refuse stop being suggested to anyone.
How a result is attributed
Section titled “How a result is attributed”| Shown as | Means |
|---|---|
| Straight from the chat | completed within 30 minutes of chatting, after following a link the assistant gave, or arriving on a URL the assistant tagged |
| After a chat | the visitor chatted earlier, inside the attribution window (7 days by default) |
| Without any chat | no chat before it — the comparison group |
The Impact page shows the conversion rate of visitors who chatted beside that of visitors who did not.
What is counted, and what only gets proposed
Section titled “What is counted, and what only gets proposed”Only unambiguous evidence counts on its own. Everything else is recorded and put in front of you as a proposal, because a number you cannot defend is worth less than no number.
| Counted from its own evidence | Proposed, never counted on its own |
|---|---|
A standard purchase event in your data layer | A plain form submit — submitted is not succeeded |
| A form builder’s own success event (Contact Form 7, Gravity Forms, WPForms, Elementor, Ninja Forms, HubSpot, Typeform, Calendly) | An order total read off the page |
| A form’s own request coming back successfully | A confirmation-looking message appearing |
| Reaching a page you named | A tel: or mailto: click — deciding to call is not calling |
Conversions we cannot see
Section titled “Conversions we cannot see”The widget only sees pages it is on. Three real gaps, and what to do about them:
- A checkout hosted on another domain (Stripe, a Shopify checkout).
- A sale closed later, in your CRM rather than on the site.
- Pages without the widget installed.
For all three, report the conversion from your own systems:
curl -X POST https://engadin.ai/api/v1/conversions \ -H "Authorization: Bearer $ENGADIN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "goal": "g_…", "externalId": "order_10023", "value": 249.00, "currency": "CHF", "conversationId": "…" }'goal is the goal’s id from the Goals page. externalId is your own order or
record id: send the same one twice and the second is ignored, so a webhook that
retries cannot double-count. conversationId is optional and is what earns the
attribution — pass the id from the widget’s lead_created event or from the
REST API and the conversion is credited to that chat like
any other.
The key needs write access.
What is sent from your pages
Section titled “What is sent from your pages”Goal tracking reports the structure of what happened. It never reports what anybody typed.
Sent:
- which form, which builder made it, and what its fields are called
- the page path, with the query string and fragment removed
- the event name your data layer fired, and an order’s value and currency
- the order number, hashed in the page, used only to recognise a repeat
- the id of this browser’s chat, if it has one
Never sent:
- the contents of any field
- hidden and password fields — not even their names
- any email address, phone number or name, from a form or from the page
This is enforced twice: in the widget before anything is sent, and again on our side, where anything not on the list is discarded before it can be stored.
No new identifier is created for any of this. Attribution uses the conversation id the widget already keeps for the chat itself, and the same salted, hashed IP the visitor counts already use.
Consent
Section titled “Consent”If your site runs a consent tool, goal tracking obeys it. Google consent mode
(analytics_storage) and the IAB TCF API are both read; while either says no,
nothing is reported, and reporting resumes if the visitor later agrees.
If your site has no consent framework there is nothing to read, and goal tracking behaves as described above. See security and privacy for what is stored and where.
What it tells you beyond the count
Section titled “What it tells you beyond the count”The Impact page also lists the subjects that come before a dead end: the conversation topics whose visitors reach a goal far less often than your average. That is your content queue ordered by what it costs you, rather than by how often something gets asked — usually a different order, and a more useful one.