The Kiyoh Review Invite template sends review invitation emails to customers directly from GTM by calling the Kiyoh API on order confirmation. It uses GTM's sendPixel method to fire a GET request with the customer and order details.
Kiyoh Review Invite GTM tag template
Sends review invitations through the Kiyoh or Klantenvertellen API straight from Google Tag Manager, with a configurable delay and four languages.
What it does
Features
- Sends invitations through the Kiyoh and Klantenvertellen API without custom code
- Supports both platforms: Kiyoh internationally and Klantenvertellen in the Netherlands
- Configurable delay in days, so the email lands after delivery
- Four languages: Dutch, English, German and French
- Fires as a lightweight pixel request, with no script injection
- Maps directly to Data Layer variables for customer and order data
What gets sent
The template builds this GET request:
https://www.kiyoh.com/v1/invite/external
?hash={hash}&location_id={locationId}&tenantId={tenantId}
&email={email}&first_name={firstName}&last_name={lastName}
&ref_code={orderId}&delay={delay}&language={language}The tenantId is set automatically from your Platform choice: 98 for Kiyoh, 99 for Klantenvertellen.
Setting it up
- In your Kiyoh or Klantenvertellen dashboard, go to the API settings and note your API Hash and Location ID.
- Create a new tag in GTM using the Kiyoh Review Invite template.
- Enter your API Hash and Location ID, and select the right Platform.
- Map Customer Email to a Data Layer Variable holding the buyer's email on the confirmation page.
- Optionally map First Name, Last Name and Order ID to their variables.
- Set the Delay. Three to seven days is common, giving the customer time to receive the order before being asked about it.
- Set the Language to match your customer's locale.
Triggers
Fire the tag on the order confirmation page, either through a Custom Event trigger on your purchase event, or a Page View trigger with a URL condition such as /order-confirmation or /checkout/thank-you.
dataLayer.push({
event: 'purchase',
customerEmail: '{{ customer.email }}',
customerFirstName: '{{ customer.first_name }}',
customerLastName: '{{ customer.last_name }}',
orderId: '{{ order.name }}'
});Consent. This tag sends a customer's email address to an external API, so wire it into your consent setup.
Deduplication. Pass the Order ID. Kiyoh uses the reference code to recognise unique invitations.
Troubleshooting
No invitation arrives. Check the API Hash is correct and active, that Customer Email resolves to a valid address in Preview, and that the tag appears in the fired tags list. If a Delay is set, wait it out. The Kiyoh dashboard has invitation logs showing whether the request landed.
Wrong platform. Kiyoh and Klantenvertellen use different tenant IDs, and the wrong one gets rejected. Kiyoh is 98, Klantenvertellen is 99.
Wrong language. Check the Language field. Left empty, the API falls back to the default configured in your account.
Tag fires but the API errors. sendPixel doesn't expose the response, so replicate the request in your address bar or in Postman to see what comes back. An incorrect Location ID returns an authorisation error.
Duplicate invitations. Without the Order ID, Kiyoh cannot deduplicate. If the tag fires more than once, for instance on reload, add a trigger condition or a cookie so it fires once per order.
Support
- Kiyoh: https://www.kiyoh.com
- Klantenvertellen: https://www.klantenvertellen.nl
- Kiyoh API documentation: in your dashboard under API settings
- Kiyoh support: https://www.kiyoh.com/contact
Want to talk about this?