Read Hightouch’s documentation about Voucherify for more information.
Connect Voucherify in Hightouch
To Connect Voucherify in Hightouch, follow these steps.1
Generate Hightouch integration keys
To connect Hightouch with Voucherify, you need to generate new integration keys in Voucherify:
- Go to Project Settings and in the General tab, scroll down to Integration Keys.
- Click the plus button on the right.
- Fill in the Name for your key.
- Choose a role from the Role drop-down list.
- Choose Hightouch from the Integration drop-down list.
- Click Create Integration API Key button.
A customer sync needs a role that can modify customers (
customers.modify). An event sync needs a role that can read customers (customers.read). See the User roles page to learn more about default and custom roles.A role that can only view customers still results in a received request. Voucherify rejects each customer sync for that key, and those profiles stay unchanged.2
Add Voucherify as a destination in Hightouch
To connect Voucherify in Hightouch, you need to add Voucherify as a destination in Hightouch:
- Go to the Destinations overview page and click the Add destination button.
- Select Voucherify and click Continue.
- Authenticate Hightouch to Voucherify by providing region, the application ID, and the app token (secret key).
Hightouch synchronization
Hightouch synchronization with Voucherify allows you to synchronize data that’s stored in Hightouch with Voucherify. You can synchronize customer, customer segment, and custom event data.Customer sync
Read Hightouch’s documentation about customer sync for more information.
Customer sync uses the daily webhook limit.
source_id, email, name, description, phone, birthdate, metadata, and an address with city, state, country, and postal_code. A street on the profile is address.line_1 or address.line_2. The Hightouch payload sends the street as address.street, and Voucherify leaves that property off the profile. Put the street in metadata when the profile should keep it.
Customer segment sync
Read Hightouch’s documentation about customer segment sync for more information.
Customer segment sync uses the API limits.
- New segment members: Hightouch adds a value to the customer’s metadata field in their Voucherify profile (for example,
"vip_status": true). - Segment members who left: Hightouch changes or removes the value to that metadata field (for example,
"vip_status": false). - Segment members who are still in: Nothing is sent.
- Object sync: The metadata field is set when the customer enters the segment. However, the metadata field never changes when the customer leaves the audience. Customers stay in the Voucherify segment indefinitely.
- Segment sync: The metadata field is updated on each sync. Hightouch removes the metadata field value when a customer leaves the Hightouch audience, so segment members exits are handled automatically.
Event sync
Read Hightouch’s documentation about event sync for more information.
Event sync uses the daily webhook limit.
event (the custom event name) and customer.source_id. You can also send the customer fields from the customer sync, event properties in metadata, referral.code, referral.referrer_id, and loyalty.code.
The event sync creates or updates the customer in the event, then records the custom event on that profile. Use it to trigger a Voucherify custom event for many customers at once.
Check the sync
Verify in Voucherify if a Hightouch run is successfully received. The result is the customer profile for the mapped Source ID, in the project for the integration key used in the sync. An event sync also records the custom event on that profile. Confirm a successful sync in two places:- The Audit log shows each API call.
- The Activity tab in a customer profile shows what that call changed.
Audit log
Voucherify stores one API call per customer and one API call per custom event:- Each customer is
POST /v1/customers. - Each custom event is
POST /v1/events.
POST /v1/customers rows.
The channel on each call is hightouch-webhook-handler. The Audit log labels that channel Hightouch.
A row is stored when the customer or event call reaches its handler, including when that handler returns an error.
These calls leave no audit row. Check the Hightouch sync result for them:
- A payload rejected on the bulk endpoint, before Voucherify queues the customers or events. Each bulk request holds at most 100 customers or 100 events.
- A call the gateway rejects before the handler runs. That includes a missing permission, a rate limit, and a blocked key.
Customer activity
The same calls write the usual activity events. They appear on the customer Activity tab and in List customer activity (GET /v1/customers/{customerId}/activity):
- A new customer is
customer.created. - A later change is
customer.updated. When the update changes nothing, there is nocustomer.updatedevent. The Audit log row forPOST /v1/customersis still there. - A tracked custom event is
customer.custom_event. The event name isdata.event.type.
event_source.channel is API, and the row shows the integration key the sync used.
To tie an activity row back to Hightouch:
- Match it to the Audit log row for that request. The audit channel is Hightouch.
- On a custom event,
event.metadata.sourceishightouch-webhook-handler. An event property mapped tosourcereplaces that value. - On the customer,
system_metadata.sourceishightouch.customer.createdandcustomer.updatedinclude that customer payload.
What to compare
Sync one customer you can recognize. If you use event sync, include one custom event for that customer.- In Audit log > Logs, filter for Channel > Hightouch and for Endpoint >
POST /v1/customers. Check if the request and response bodies match the Hightouch data, including the Source ID. - Open that customer in Voucherify. Confirm the profile Source ID and the mapped fields match the Hightouch data.
- On the Activity tab, confirm
customer.createdfor a new profile, orcustomer.updatedwhen a field changed. When nothing changed, use the Audit log for further troubleshooting. - For a custom event, filter for Channel > Hightouch and for Endpoint >
POST /v1/events. Check if the request and response bodies match the Hightouch data. On the same customer, confirmcustomer.custom_eventand thatdata.event.typeis the event you sent. A new Source ID on that event also creates the profile (customer.created). Customer fields on the event update the same profile (customer.updatedwhen a field changed). - Run the same customer again with one changed field. The same profile changes. A second profile means the Source ID column does not match the first profile.

