> ## Documentation Index
> Fetch the complete documentation index at: https://www.zippendo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect SendGrid

> Connect SendGrid from Integrations — API Key, From Email, From Name, Connection Name, auto-send events, test, delivery log, and disconnect.

**SendGrid** sends branded transactional emails from Zippendo events using Dynamic Templates. The catalog card copy is: **Send branded emails via SendGrid Dynamic Templates.**

This page is the SendGrid connect form. Shared chrome: [Connect an integration](/docs/how-to/connect-an-integration). Inventory: [Connect a carrier or integration](/docs/how-to/connect-index). Conditional logic: [Automations](/docs/how-to/automations). Provider essay: [SendGrid](/docs/integrations/sendgrid).

Creating a connection uses the same plan gate as outbound webhooks (**Growth** and above). Nordlys on this page is **Pro**, so **Connect** is unlocked.

## Prerequisites

* A SendGrid **API Key** with mail-send permission.
* A verified **From Email** and the **From Name** that should appear on messages.

## Where to get the API Key

Create the key in SendGrid **Settings → API Keys**. That console requires signing in to **your** Twilio SendGrid account. The public docs page below is the step we can show.

<Frame caption="SendGrid docs: create an API key under Settings → API Keys (the live console requires your own login)">
  <img src="https://mintcdn.com/zippendo/9-sVHrvFOKqRvskN/images/how-to/connect-sendgrid/10-sendgrid-create-api-key.png?fit=max&auto=format&n=9-sVHrvFOKqRvskN&q=85&s=acb747a6f18dc37dd9053be105df31a8" alt="Twilio SendGrid docs for API Keys, with Manage API keys and a Settings then API Keys path" width="2880" height="2200" data-path="images/how-to/connect-sendgrid/10-sendgrid-create-api-key.png" />
</Frame>

## Connect from Catalog

<Steps>
  <Step title="Open Catalog">
    Sidebar **Integrations**. Page title **Integrations**. Description: **Connect downstream tools to receive shipping and order events from Zippendo.** Tabs: **Connected** (`?tab=connected`) and **Catalog** (`?tab=catalog`).
  </Step>

  <Step title="Find SendGrid">
    Card title **SendGrid**. Links: **Use in automations** and **Read more** (`https://zippendo.com/docs/integrations/sendgrid`). Button **Connect**, or **Add connection** after the first SendGrid connection.
  </Step>

  <Step title="Click Connect">
    Modal id `connect-integration-modal`. Title **Connect SendGrid**. Subtitle: **Send branded emails via SendGrid Dynamic Templates**.
  </Step>

  <Step title="Fill required fields">
    **Connection Name \***, **API Key \***, **From Email \***, and **From Name \***. Tick **Auto-send events** if you want Zippendo to send without an automation.
  </Step>

  <Step title="Connect">
    **Connect** stays disabled until name, API Key, From Email, and From Name are filled. Success toast: **Integration connected successfully**. Failure: **Failed to create connection** (or **This feature is not available on your current plan.**).
  </Step>
</Steps>

<Frame caption="SendGrid on Catalog — Use in automations, Read more, Connect">
  <img src="https://mintcdn.com/zippendo/9-sVHrvFOKqRvskN/images/how-to/connect-sendgrid/01-catalog-card-light.png?fit=max&auto=format&n=9-sVHrvFOKqRvskN&q=85&s=625e410ac5ccfeb19dc6ca9a5d04c3d5" alt="Integrations Catalog with the SendGrid card, Use in automations, Read more, and Connect" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-sendgrid/01-catalog-card-light.png" />

  <img src="https://mintcdn.com/zippendo/9-sVHrvFOKqRvskN/images/how-to/connect-sendgrid/01-catalog-card-dark.png?fit=max&auto=format&n=9-sVHrvFOKqRvskN&q=85&s=a40332cb1831d1adc654c741275608fc" alt="Integrations Catalog with the SendGrid card, Use in automations, Read more, and Connect" className="hidden dark:block" width="2880" height="1800" data-path="images/how-to/connect-sendgrid/01-catalog-card-dark.png" />
</Frame>

<Frame caption="Connect SendGrid — API Key, From Email, From Name, Auto-send events">
  <img src="https://mintcdn.com/zippendo/9-sVHrvFOKqRvskN/images/how-to/connect-sendgrid/02-connect-modal-light.png?fit=max&auto=format&n=9-sVHrvFOKqRvskN&q=85&s=f71f61b5708a93ab60ebe8e2037ecec6" alt="Connect SendGrid dialog with Connection Name, API Key, From Email, From Name, and event checkboxes" className="block dark:hidden" width="2880" height="2800" data-path="images/how-to/connect-sendgrid/02-connect-modal-light.png" />

  <img src="https://mintcdn.com/zippendo/9-sVHrvFOKqRvskN/images/how-to/connect-sendgrid/02-connect-modal-dark.png?fit=max&auto=format&n=9-sVHrvFOKqRvskN&q=85&s=7a6fc05333664a589dcceebf5e6af583" alt="Connect SendGrid dialog with Connection Name, API Key, From Email, From Name, and event checkboxes" className="hidden dark:block" width="2880" height="2800" data-path="images/how-to/connect-sendgrid/02-connect-modal-dark.png" />
</Frame>

## Shared fields

These appear on every integration connect dialog, including SendGrid.

| Field                  | Required | What it is                                                                                                                                                             |
| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Connection Name \*** | Yes      | Placeholder **e.g., My SendGrid**. Max 100 characters.                                                                                                                 |
| Hint                   | —        | **Need conditional logic, delays, or multi-step workflows? Create an automation instead.** **Create an automation** links to Automations.                              |
| **Auto-send events**   | No       | Checkbox grid. **Select All** / **Deselect All** toggles every event this provider supports. Empty means Zippendo will not auto-push; **Send test event** still works. |

## SendGrid credentials

| Field             | Required | Control                                 | Details                                    |
| ----------------- | -------- | --------------------------------------- | ------------------------------------------ |
| **API Key \***    | Yes      | Password. Placeholder **Enter api key** | Masked. Never shown again after connect.   |
| **From Email \*** | Yes      | Text. Placeholder **Enter from email**  | Must match a sender SendGrid has verified. |
| **From Name \***  | Yes      | Text. Placeholder **Enter from name**   | Display name on the email.                 |

Footer: **Cancel** / **Connect**.

**Dynamic Template ID** exists on the API (`eventConfig`) only. It is **not** a field on Connect, Edit, or the automation inspector. Auto-send and **Send SendGrid Email** use that per-event `templateId` when it is set via the API.

SendGrid does **not** auto-send order events. Live mail also needs a customer email on the payload as the recipient.

## Auto-send events SendGrid supports

Groups shown: **Shipments**, **Tracking**. No **Orders** group.

| Checkbox                | Event                 |
| ----------------------- | --------------------- |
| **Shipment Created**    | `shipment.created`    |
| **Shipment Dispatched** | `shipment.dispatched` |
| **Shipment Cancelled**  | `shipment.cancelled`  |
| **Tracking Updated**    | `tracking.updated`    |

Not on this modal: **Shipment Updated**, **Shipment Error**, **Order Created**, **Order Updated**, **Order Cancelled**.

<Frame caption="SendGrid Auto-send events — Shipments and Tracking Updated">
  <img src="https://mintcdn.com/zippendo/9-sVHrvFOKqRvskN/images/how-to/connect-sendgrid/07-events-light.png?fit=max&auto=format&n=9-sVHrvFOKqRvskN&q=85&s=cc8f1af6f9bf67b7afc95ec71794ee4b" alt="Connect SendGrid dialog scrolled to Auto-send events including Tracking Updated" className="block dark:hidden" width="2880" height="2800" data-path="images/how-to/connect-sendgrid/07-events-light.png" />

  <img src="https://mintcdn.com/zippendo/9-sVHrvFOKqRvskN/images/how-to/connect-sendgrid/07-events-dark.png?fit=max&auto=format&n=9-sVHrvFOKqRvskN&q=85&s=8d80b10560f45cfd76c60090b7d2cecd" alt="Connect SendGrid dialog scrolled to Auto-send events including Tracking Updated" className="hidden dark:block" width="2880" height="2800" data-path="images/how-to/connect-sendgrid/07-events-dark.png" />
</Frame>

## After you connect

**Connected** shows a green **Connected** pill and **\{\{count}} connection(s)**. Each row: name, **\{\{count}} event(s)** (and **Paused** if inactive — there is **no** pause toggle), **Send test event**, **View delivery log**, **Edit connection**, **Delete connection**.

<Frame caption="Connected — SendGrid row with test, log, edit, and disconnect">
  <img src="https://mintcdn.com/zippendo/9-sVHrvFOKqRvskN/images/how-to/connect-sendgrid/03-connected-light.png?fit=max&auto=format&n=9-sVHrvFOKqRvskN&q=85&s=19bd71a06afa3cd9e8060d5e56a8db0e" alt="Integrations Connected tab with a SendGrid connection and action icons" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-sendgrid/03-connected-light.png" />

  <img src="https://mintcdn.com/zippendo/9-sVHrvFOKqRvskN/images/how-to/connect-sendgrid/03-connected-dark.png?fit=max&auto=format&n=9-sVHrvFOKqRvskN&q=85&s=055def78c662e78e337e128f41a9fbcf" alt="Integrations Connected tab with a SendGrid connection and action icons" className="hidden dark:block" width="2880" height="1800" data-path="images/how-to/connect-sendgrid/03-connected-dark.png" />
</Frame>

There is **no** Sandbox Mode checkbox. Use **Send test event** (toast **Test event sent** / **Failed to send test event**).

## Edit SendGrid Connection

Modal id `edit-integration-connection-modal`. Title **Edit SendGrid Connection**. Subtitle **Update the configuration for \{\{connection}}**. **Save Changes** disabled while **Connection Name \*** is empty.

<Frame caption="Edit SendGrid Connection — API Key, From Email, From Name, Auto-send events">
  <img src="https://mintcdn.com/zippendo/9-sVHrvFOKqRvskN/images/how-to/connect-sendgrid/04-edit-modal-light.png?fit=max&auto=format&n=9-sVHrvFOKqRvskN&q=85&s=2729a9763bb454a2860661219b2a9395" alt="Edit SendGrid Connection dialog with Connection Name, API Key, From Email, From Name, and Auto-send events" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-sendgrid/04-edit-modal-light.png" />

  <img src="https://mintcdn.com/zippendo/9-sVHrvFOKqRvskN/images/how-to/connect-sendgrid/04-edit-modal-dark.png?fit=max&auto=format&n=9-sVHrvFOKqRvskN&q=85&s=ac73bfae5d176dfec8d0911a4c35150e" alt="Edit SendGrid Connection dialog with Connection Name, API Key, From Email, From Name, and Auto-send events" className="hidden dark:block" width="2880" height="1800" data-path="images/how-to/connect-sendgrid/04-edit-modal-dark.png" />
</Frame>

| Field                  | Details                                                                |
| ---------------------- | ---------------------------------------------------------------------- |
| **Connection Name \*** | Same as create.                                                        |
| **API Key \***         | Placeholder **Enter new api key or leave to keep existing**. Password. |
| **From Email \***      | Placeholder **Enter new from email or leave to keep existing**.        |
| **From Name \***       | Placeholder **Enter new from name or leave to keep existing**.         |
| **Auto-send events**   | Same SendGrid checkboxes as create.                                    |

Toasts: **Integration updated successfully** / **Failed to update connection**.

<Warning>
  Leave every credential blank to keep the stored values. Filling any credential field **replaces** the whole credential set — fill **API Key**, **From Email**, and **From Name** together if you are rotating secrets.
</Warning>

## Delivery log and test

**View delivery log** — modal id `integration-delivery-log-modal`. Title **Delivery Log**. Subtitle **Recent deliveries for \{\{connection}}**. **Close**. Empty: **No deliveries yet**. Rows show event name, HTTP status, duration in `ms`, relative time, and error text.

<Frame caption="Delivery Log — empty until the first auto-send or Send test event">
  <img src="https://mintcdn.com/zippendo/9-sVHrvFOKqRvskN/images/how-to/connect-sendgrid/05-delivery-log-light.png?fit=max&auto=format&n=9-sVHrvFOKqRvskN&q=85&s=68b1c7ec9b58c54dc193ad16df586466" alt="Delivery Log modal showing No deliveries yet for a SendGrid connection" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-sendgrid/05-delivery-log-light.png" />

  <img src="https://mintcdn.com/zippendo/9-sVHrvFOKqRvskN/images/how-to/connect-sendgrid/05-delivery-log-dark.png?fit=max&auto=format&n=9-sVHrvFOKqRvskN&q=85&s=1f746a246d16b9bd865a0191fa908e93" alt="Delivery Log modal showing No deliveries yet for a SendGrid connection" className="hidden dark:block" width="2880" height="1800" data-path="images/how-to/connect-sendgrid/05-delivery-log-dark.png" />
</Frame>

**Send test event** enqueues `integration.test`. It does not require any auto-send checkbox.

## Disconnect

Trash opens **Disconnect Integration**. Description: **Are you sure you want to disconnect this integration? This will stop all event deliveries and delete the delivery history.** Type **DELETE** to enable **Disconnect**. Label: **Type DELETE to confirm**.

Toasts: **Integration disconnected** / **Failed to delete connection**. Missing row: **Integration not found.** (`ORG_INTEGRATION_NOT_FOUND`).

<Frame caption="Disconnect Integration — type DELETE to confirm">
  <img src="https://mintcdn.com/zippendo/9-sVHrvFOKqRvskN/images/how-to/connect-sendgrid/06-disconnect-modal-light.png?fit=max&auto=format&n=9-sVHrvFOKqRvskN&q=85&s=4cf4983be9b48991a3ed54d38627b0ca" alt="Disconnect Integration confirmation requiring DELETE" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-sendgrid/06-disconnect-modal-light.png" />

  <img src="https://mintcdn.com/zippendo/9-sVHrvFOKqRvskN/images/how-to/connect-sendgrid/06-disconnect-modal-dark.png?fit=max&auto=format&n=9-sVHrvFOKqRvskN&q=85&s=b3b2185350b3484c0e8cecdbd2a968d4" alt="Disconnect Integration confirmation requiring DELETE" className="hidden dark:block" width="2880" height="1800" data-path="images/how-to/connect-sendgrid/06-disconnect-modal-dark.png" />
</Frame>

<Check>
  You are done when **Connected** lists SendGrid with a **Connected** pill and **Send test event** toasts **Test event sent**.
</Check>

## Automations

Palette: **Send SendGrid Email** — **Sends branded emails via SendGrid Dynamic Templates through a connected integration** (`action.integration.sendgrid`).

| Field                 | Required                         | Details                                                                                                                                                    |
| --------------------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Connection**        | Yes (**Connection is required**) | **Select a connection**. Helper: **Select an existing sendgrid connection. Manage connections in Settings > Integrations.** Empty: **No items available**. |
| **Custom properties** | No                               | **Add**. Key **key**, value **\{\{shipment.reference}}**.                                                                                                  |

There is no **Event name override** and no **Dynamic Template ID** on this inspector.

Full node list: [Automations](/docs/how-to/automations).

## Related

* [Connect a carrier or integration](/docs/how-to/connect-index)
* [Connect an integration](/docs/how-to/connect-an-integration)
* [Carrier credentials](/docs/how-to/carrier-credentials)
* [Sandbox mode](/docs/how-to/sandbox-mode)
* [Request a carrier integration](/docs/how-to/request-carrier-integration)
* [Carriers](/docs/tutorials/carriers)
* [Automations](/docs/how-to/automations)
* [SendGrid](/docs/integrations/sendgrid)
* [Integrations troubleshooting](/docs/integrations/troubleshooting)
