Webhooks only fire for identified shoppers: they’re logged in, or they submitted their email through the widget. When an anonymous visitor identifies themselves, their earlier try-ons are replayed to your endpoint at that moment.
Set up
1
Open Integrations
Shopify: In the Genlook app, go to Integrations.WooCommerce, PrestaShop, and other platforms: Sign in at app.genlook.app, open your site, then go to Integrations.
2
Add your endpoint URL
Find Webhook, enter the HTTPS URL Genlook should call, and save.
3
Store the signing secret
Saving generates a signing secret and shows it once. Store it now; later visits only confirm that a secret exists. If you lose it, rotate to get a new one.
Events
try_on_session intentionally duplicates the product_tried_on events of the same session: consume whichever granularity fits your pipeline and ignore the other. Its sessionId is stable, so re-deliveries of the same session can be deduplicated on it.
Request format
Every delivery is a POST with a JSON body and these headers:
The body is always the same envelope; only
data changes per event:
Product fields
Products inproduct_tried_on and try_on_session payloads carry the ids plus every catalog detail Genlook could resolve. A field that can’t be resolved is omitted, never sent as null or empty.
Payloads by event
product_tried_on
try_on_session
Distinct products, most-tried first, each with the product fields above plus per-product counts:
order_try_on_attributed
tryOnCount is the shopper’s try-on count in the attribution window at order time, and productMatch is true when the order contains a product they tried on.
Verify the signature
Compute HMAC-SHA256 of the raw request body with your secret and compare it, timing-safe, against the hex aftersha256=. Reject the request on mismatch.
Delivery and retries
- Respond with a
2xxquickly; Genlook times out after 5 seconds. - Failed deliveries (timeouts,
408,429, and5xx) are retried up to 3 times with exponential backoff, then dropped. Webhooks are best-effort: treat your own systems as the source of truth for anything critical. - Deliveries can arrive out of order; use
occurredAtandsessionIdrather than arrival time.

