External system integrations with webhooks
You can easily integrate with external systems using webhooks. Use these examples to integrate with one of the listed systems or to create a custom configuration.
tip
Read this document to learn more about configuring hooks and webhooks.
Mailchimp
Use this configuration to send emails to users with Mailchimp
- The Ory Network
- Self-Hosted Ory Kratos Config
- hook: web_hook
config:
url: https://mandrillapp.com/api/1.0/messages/send
method: POST
# Encode the Jsonnet with Base64 and add the encoded string to 'body'.
body: base64://ENCODED_JSONNET
path/to/my/kratos.config.yml
- hook: web_hook
config:
url: https://mandrillapp.com/api/1.0/messages/send
method: POST
body: /path/to/my/mandrillapp.jsonnet
Request body Jsonnet:
info
For Mailchimp, you must pass the API key in the request body. This means you must include it in the Jsonnet snippet.
Mailchimp request body
function(ctx) {
key: "<Your-Api-Key>",
message: {
from_email: "hello@example.com",
subject: "Hello from Ory",
text: "Welcome to Ory! Have fun and happy hacking!",
to: [
{
email: ctx.identity.verifiable_addresses[0].value,
type: "to"
}
]
}
}
HubSpot
Use this configuration to add customers to your HubSpot contact list:
note
This setup creates a non-blocking webhook. Click here to learn more.
- The Ory Network
- Self-Hosted Ory Kratos Config
- hook: web_hook
config:
response:
ignore: true
auth:
type: api_key
config:
name: Authorization
value: "Bearer <YOUR_API_KEY_HERE>"
in: header
url: "https://api.hubapi.com/crm/v3/objects/contacts"
method: POST
# Encode the Jsonnet with Base64 and add the encoded string to 'body'.
body: base64://ENCODED_JSONNET
path/to/my/kratos.config.yml
- hook: web_hook
config:
response:
ignore: true
auth:
type: api_key
config:
name: Authorization
value: "Bearer <YOUR_API_KEY_HERE>"
in: header
url: "https://api.hubapi.com/crm/v3/objects/contacts"
method: POST
body: /path/to/my/hubspot_body.jsonnet
Request body Jsonnet:
HubSpot request body
function(ctx)
{
properties: {
email: ctx.identity.traits.email,
firstname: ctx.identity.traits.name,
// ...
},
}
Segment
Use this configuration to call Segment's Identify API and collect user-specific usage data:
- The Ory Network
- Self-Hosted Ory Kratos Config
- hook: web_hook
config:
auth:
type: "basic_auth"
config:
user: <segment_write_key>
password: ""
url: "https://api.segment.io/v1/identify"
method: POST
# Encode the Jsonnet with Base64 and add the encoded string to 'body'.
body: base64://ENCODED_JSONNET
- hook: web_hook
config:
auth:
type: "basic_auth"
config:
user: <segment_write_key>
password: ""
url: "https://api.segment.io/v1/identify"
method: POST
body: /path/to/my/segment_body.jsonnet
Request body Jsonnet:
Segment request body
function(ctx) {
userId: ctx.identity.id,
traits: {
email: ctx.identity.traits.email,
name: ctx.identity.traits.name,
newsletterConsent: ctx.identity.traits.consent.newsletter,
},
}