Set up the system webhook
The system webhook is an Iterable webhook that reports what happens to each JustAI message: sends, skipped sends, bounces, opens, clicks, and unsubscribes. You create it in Iterable with the endpoint that JustAI gives you. JustAI then writes its own authentication header into the webhook. When you finish, the connection’s System webhook step reads Webhook #<id>.
Before you begin
Section titled “Before you begin”- The connection’s API key is saved. JustAI uses it to find your project’s system webhooks. See Add your Iterable project.
- You can create system webhooks in the Iterable project.
- No other JustAI connection uses this Iterable project. See Connect more than one Iterable project.
Create the webhook in Iterable
Section titled “Create the webhook in Iterable”Create a new webhook for JustAI. Don’t add JustAI’s endpoint to a webhook that another system uses. When JustAI sets its header, it also sets the webhook’s endpoint and replaces any custom headers on that webhook.
In JustAI, open the connection in Settings > Integrations and expand the System webhook step. Then follow these steps in order.
-
In the System webhook step, select the System webhooks link.
Iterable’s system webhooks page opens.
-
In Iterable, select Create webhook.
-
In JustAI, copy the endpoint under Paste this endpoint: and paste it into the webhook’s endpoint in Iterable.
-
Set Status to Enabled.
-
Leave Authentication set to None.
JustAI adds its own header in a later step. Keep this setting at None after that, too.
-
Turn on the events for each channel you send through JustAI.
See Events to enable.
-
Select Save Webhook.
Events to enable
Section titled “Events to enable”JustAI reads these events. In Iterable’s webhook form, turn them on for every channel you send through JustAI.
| Channel | Events |
|---|---|
| Triggered send, Send skip, Bounce, Open, Click, Unsubscribe | |
| SMS | Send, Send skip, Bounce, Click |
| Push | Send, Send skip, Bounce, Open |
| Web push | Send, if you send web push |
Iterable reports sends from blast campaigns and triggered campaigns separately. JustAI sends through triggered campaigns, so for email, select Triggered send. Blast send alone does not report JustAI’s emails.
Check the events before you save. JustAI doesn’t check which events you turned on, so the System webhook step can read Webhook #<id> even when an event is missing.
Connect the webhook in JustAI
Section titled “Connect the webhook in JustAI”-
Back in JustAI, select Verify.
The step summary changes to
Webhook #<id> — needs the JustAI secret key. If it still reads “Webhook not set up yet.”, go to If JustAI can’t find the webhook.Holding the pointer over Verify also shows “JustAI can see webhook #
<id>.” or “No webhook found yet.” -
Select Set header.
JustAI writes its authentication header into the webhook in Iterable. The step summary changes to
Webhook #<id>and shows a check mark.
The button reads Set header when JustAI needs to write its header, and Update header when everything already matches. Select whichever one appears.
Check your work
Section titled “Check your work”- The System webhook step shows a check mark and reads
Webhook #<id>. The number matches the webhook’s ID in Iterable. - In Iterable, the webhook’s Status is Enabled and its Authentication is None.
- If the content data feed is also done, the Sending profiles step unlocks and shows Add profile.
- After your first live journey send, open the journey’s analytics. The email step shows Sent, Delivered, Opened, and Clicked. Test emails from a sending profile do not appear in journey analytics.
If the step shows a different summary, use this table.
| Step summary | Meaning | What to do |
|---|---|---|
| “Save an API key first.” | The connection has no saved API key. | Save the key. See Add your Iterable project. |
| “Loading webhooks…” | JustAI is reading your project’s system webhooks. | Wait for the list to load. |
| “Webhook not set up yet.” | JustAI found no webhook with a JustAI endpoint in the project. | Create the webhook in Iterable, then select Verify. |
Webhook #<id> — needs the JustAI secret key |
JustAI found the webhook but has not written its header. | Select Set header. |
Webhook #<id> is disabled in Iterable — enable it to receive events |
The webhook’s status in Iterable is not Enabled. | Enable the webhook in Iterable, then select Verify. |
| “Webhooks haven’t loaded yet. Refresh to try again.” | JustAI could not load the list. | Refresh the page. |
Webhook #<id> |
The step is done. | None. |
How JustAI uses the events
Section titled “How JustAI uses the events”- Sends, opens, and clicks appear in each journey’s analytics. Iterable engagement does not appear under Events.
- Iterable does not report deliveries. JustAI counts a send as delivered unless Iterable reports a bounce.
- A click on an email also counts as an open.
- JustAI counts Iterable unsubscribes in analytics, and Iterable applies its subscription preferences to the email it sends. Confirm how these decisions are synchronized to JustAI and your system of record, and verify both systems with a test unsubscribe before launch.
If JustAI can’t find the webhook
Section titled “If JustAI can’t find the webhook”If Verify shows “No webhook found yet.” or the step reads “Webhook not set up yet.”, work through these checks.
-
Check that you created the webhook in the same Iterable project as the connection’s API key.
JustAI sees only the webhooks in that project.
-
Open the webhook in Iterable and compare its endpoint with the one under Paste this endpoint: in JustAI.
If they differ, paste the endpoint from JustAI again.
-
Check that you selected Save Webhook in Iterable.
-
In JustAI, select Verify again.
The step reads
Webhook #<id> — needs the JustAI secret key. -
Select Set header.
The step summary changes to
Webhook #<id>.
If Set header shows “Unable to configure Iterable webhook:” followed by an error from Iterable, check that the connection’s API key is a server-side key with full access. See Rotate the API key to replace it.
Keep the webhook working
Section titled “Keep the webhook working”- Don’t edit or remove the header that JustAI added in Iterable. JustAI refuses webhook calls without it, so engagement stops arriving, and the setup screen still shows
Webhook #<id>. - Keep Authentication set to None in Iterable.
- If you change the webhook in Iterable, for example its endpoint or headers, open the connection, select Verify, then select Set header or Update header, whichever appears.
- If you disable the webhook in Iterable, JustAI stops receiving events. Enable it again in Iterable, then select Verify to refresh the step. JustAI needs no other change.
- If sends or opens stop appearing in journey analytics, open the connection and select Update header.
