# Brevo

Source: https://gokarla.io/docs/guides/notify/integrations/brevo

# Brevo

:::info

The Brevo integration allows Karla to provide your Brevo account with triggers of any sort, like shipment notifications or claims.

:::

## Steps

### 1. Open Brevo & navigate to SMTP & API

Navigate to your Brevo instance and click on `SMTP & API` in the main navigation.

### 2. Create API Key

In the API Keys section, click on `Generate a new API key` to create new API access.

Name your API key "Karla Integration" and select the necessary permissions.

See [Create and manage your Brevo API Keys](https://help.brevo.com/hc/en-us/articles/209467485-Create-and-manage-your-API-keys).

### 3. Copy the API Key

Copy the generated API key from Brevo.

In our [portal](https://portal.gokarla.io/), navigate to `Settings` > `Integrations`, look for `Brevo`.

![Brevo Portal 1](/docs/content/docs/notify/integrations/assets/brevo-portal-1.png)

Paste the API key into the `Private API Key` field and click on `Save`.

:::note
Please contact our account manager if access to settings is not enabled for you in the portal. We can enable the setting for you.
:::

## Building Brevo Automations

Our Brevo integration will automatically create custom events prefixed with `karla_` for all delivery journey events.

From there, you can create automation workflows relying on these events to configure your own email flows.

### Recommended Flow Priority

To cover the most important delivery journey events, we recommend first creating automations for the following **event groups**:

1. `karla_shipment_in_transit`
2. `karla_shipment_carrier_delay`
3. `karla_shipment_damaged`
4. `karla_shipment_out_for_delivery`
5. `karla_shipment_delivered_all_events`
6. `karla_shipment_not_picked_up_returned`
7. `karla_shipment_failed_returned`

By creating these 7 automations you will be able to cover standard events happening for every order (`karla_shipment_in_transit`, `karla_shipment_out_for_delivery`), all delivered cases (`karla_shipment_delivered_all_events`) and the events that hopefully do not happen too often, but where it is most important to be proactive with your customers (`karla_shipment_carrier_delay`, `karla_shipment_damaged`, `karla_shipment_not_picked_up_returned`, `karla_shipment_failed_returned`).

:::info Event Groups vs Webhook Refs

**Brevo** uses namespaced **event groups** (like `karla_shipment_delivered`) while **webhooks** use **ref patterns** (like `shipments/delivered/SUCCESSFULLY_DELIVERED`). Event groups are business-friendly names that group multiple specific events for easier automation management.

For complete documentation, see: **[Events Reference →](/docs/platform/events/overview)**

:::

### Pickup Reminder Automation

Create an automated workflow that triggers pickup reminders for packages delivered to parcel shops or lockers that haven't been collected within a specified timeframe.

## Inserting the tracking page link

To include the tracking page link in your Brevo transactional emails you should use dynamic content with `order_number` and `zip_code` variables, so that your customers always receive their personalised link:

For emails triggered through Brevo:

### Karla events

```json title="Karla hosted tracking page"
https://app.gokarla.io/track/slug?orderNumber={{ params.order_number }}&zipCode={{ params.zip_code }}&ref=karla
```

```json title="Embedded tracking page"
https://yourshop.com/pages/tracking?orderNumber={{ params.order_number }}&zipCode={{ params.zip_code }}&ref=karla
```

### Shipping Confirmation

Triggered by external events from your shop system.

```json title="Karla hosted tracking page"
https://app.gokarla.io/track/slug?orderNumber={{ params.context.order.order_number }}&zipCode={{ params.context.order.address.zip_code }}&ref=karla
```

```json title="Embedded tracking page"
https://yourshop.com/pages/tracking?orderNumber={{ params.context.order.order_number }}&zipCode={{ params.context.order.address.zip_code }}&ref=karla
```

:::tip

A `slug` is your unique identifier that represents your shop within the Karla system. This is used to properly route tracking information and ensure that shipment data is associated with the correct merchant account.

In addition, you can use `{{ params.event_data.order_number }}` and `{{ params.event_data.zip_code }}` to get the same parameters. See /docs/platform/events/overview#payload-envelope for more info.

:::

## Testing the automations

Once you've set up the automations and the respective emails it is important you make sure that the integration is working as expected.

In the Email Template Editor go to Preview & Test functionality.

There make sure that in the contact data you see the information from the profiles from your shop and not from Karla's test events. These should be infos like customer name, order number, shipping address etc.

:::warning
You will see this information only after you have integrated your shop and Brevo with Karla. [More on shop integrations](/docs/guides/shops/overview)
:::

If you want to see how your customers will receive the emails, you can send a test email to your email address.

### Putting the automations live

After you have tested your automations, you can put them live upon the agreed go-live date.

:::warning
Make sure you have configured the proper sending settings and have disabled any frequency caps for transactional emails, so that all of your customers receive their shipping updates.
:::

## Event Groups

Karla provides the following **event groups** to your Brevo instance for building automations. These are business-friendly groupings that make it easier to create targeted campaigns without dealing with individual event names.

:::info Event Groups vs Webhook Patterns

Event groups are specifically designed for **Brevo integration** and are different from webhook ref patterns:

- **Event Groups**: Business-friendly names, prefixed by `karla_` (e.g., `karla_shipment_delivered`)
- **Webhook Refs**: Technical identifiers (e.g., `shipments/delivered/SUCCESSFULLY_DELIVERED`)

For complete documentation of all events, ref patterns, and event groups, see: **[Events Reference →](/docs/platform/events/overview)**

The event group (without the `karla_` prefix) is also available in the `event_group` variable `{{ params.event_group }}`.

:::

### Claims

For any processed claim (e.g. damaged package, package not found...).
See [Claims](https://api.gokarla.io/public/redoc#tag/Claim).

- `karla_claim_created`
- `karla_claim_updated`

### Shipments

For any processed shipment update:

| Event Group                                               | Description                    | Use Case                         |
| --------------------------------------------------------- | ------------------------------ | -------------------------------- |
| `karla_shipment_pre_transit`                              | Package prepared for shipping  | Confirmation emails              |
| `karla_shipment_in_transit`                               | Package moving through network | Journey updates                  |
| `karla_shipment_carrier_delay`                            | Carrier-reported delays        | Proactive communication          |
| `karla_shipment_damaged`                                  | Package damage reported        | Customer service outreach        |
| `karla_shipment_out_for_delivery`                         | Package out for delivery       | Delivery notifications           |
| `karla_shipment_delivered`                                | Successful delivery            | Delivery confirmations           |
| `karla_shipment_delivered_all_events`                     | All delivery variations        | Comprehensive delivery flows     |
| `karla_shipment_delivered_to_letterbox`                   | Delivered to letterbox         | Specific delivery method         |
| `karla_shipment_delivered_to_neighbour`                   | Delivered to neighbor          | Neighbor delivery notification   |
| `karla_shipment_delivered_to_parcel_locker`               | Delivered to parcel locker     | Pickup instructions              |
| `karla_shipment_delivered_to_parcel_shop`                 | Delivered to pickup point      | Pickup notifications             |
| `karla_shipment_delivery_failed`                          | Delivery attempt failed        | Retry communications             |
| `karla_shipment_delivery_failed_address_issue`            | Address problems               | Address correction requests      |
| `karla_shipment_delivery_failed_forwarded_to_parcel_shop` | Forwarded to pickup            | Alternative pickup location      |
| `karla_shipment_delivery_second_attempt`                  | Reattempting delivery          | Second attempt notifications     |
| `karla_shipment_not_picked_up_then_returned`              | Not picked up, returned        | Return notifications             |
| `karla_shipment_refused_then_returned`                    | Customer refused package       | Return processing                |
| `karla_shipment_failed_returned`                          | Package returned to sender     | Return confirmations             |
| `karla_shipment_picked_up`                                | Successfully picked up         | Pickup confirmations             |
| `karla_shipment_lost`                                     | Package lost in transit        | Loss notification and next steps |
| `karla_shipment_delayed_due_to_customer_request`          | Customer requested delay       | Confirmation of delay request    |

### Recommended Automation Priority

**High Priority** (Essential automations):

1. `karla_shipment_in_transit` - Keep customers informed
2. `karla_shipment_out_for_delivery` - Delivery readiness
3. `karla_shipment_delivered` - Delivery confirmation
4. `karla_shipment_carrier_delay` - Proactive communication
5. `karla_shipment_delivered_all_events` - Any delivery event

**Medium Priority** (Enhanced experience):

1. `karla_shipment_delivered_to_parcel_shop` - Pickup instructions
2. `karla_shipment_delivery_failed` - Retry coordination
3. `karla_shipment_damaged` - Customer service escalation

**Lower Priority** (Edge cases):

1. `karla_shipment_not_picked_up_then_returned` - Return processing
2. `karla_shipment_failed_returned` - Return confirmation
3. `karla_claim_created` - Claims management

## Common Use Cases

### Post-Delivery Review Request

**Event Group**: `karla_shipment_delivered`
**Timing**: 2-3 days after delivery
**Content**: Thank you message + review request

### Pickup Reminder

**Event Group**: `karla_shipment_delivered_to_parcel_shop`
**Timing**: Immediate + daily reminders
**Content**: Pickup location, hours, deadline

### Delivery Issue Resolution

**Event Group**: `karla_shipment_delivery_failed`
**Timing**: Immediate
**Content**: Failed reason, next steps, support link

### Proactive Delay Communication

**Event Group**: `karla_shipment_carrier_delay`
**Timing**: As soon as delay detected
**Content**: New ETA, apology, compensation if applicable

## Best Practices

### 1. Email Content Guidelines

- **Be Specific**: Reference the exact delivery status
- **Include CTAs**: Add tracking links and next steps
- **Personalize**: Use customer and order data available from the event
- **Mobile-Optimize**: Most tracking emails are read on mobile

### 2. Testing Recommendations

1. Test each event group automation separately
2. Verify dynamic content populates correctly
3. Check email rendering across devices
4. Monitor delivery rates and engagement

## Troubleshooting

### Events Not Triggering Emails

1. Verify event group name matches exactly (case-sensitive)
2. Check integration credentials are active
3. Confirm automation is published in Brevo
4. Test with Karla test events

### Missing Data in Emails

1. Ensure all dynamic content variables match the event data
2. Check parameter syntax (`{{ params.field_name }}`)
3. Verify contact data mapping

### Email Delivery Issues

1. Check Brevo sending logs
2. Verify customer email addresses
3. Review spam folder placement
4. Check domain authentication (SPF/DKIM)

## Support

- **Karla Integration Support**: [support@gokarla.io]
- **Brevo Technical Support**: Refer to your Brevo account manager
- **Technical Documentation**: [Karla Events](/docs/platform/events/overview)

## Next Steps

1. Identify which event groups align with your communication strategy
2. Create automations for your priority events
3. Design and test email workflows
4. Monitor performance and optimize
