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

# Quickstart: send your first email

> Send a campaign today from your managed sending address, then move to your own domain and send from code or SMTP.

export const DemoVideo = ({id, title, embedUrl, src, poster, duration}) => {
  if (embedUrl) {
    return <figure className="brd-media" data-media-id={id}>
        <iframe className="brd-media-frame w-full aspect-video" src={embedUrl} title={title} allow="accelerometer; autoplay; clipboard-write; encrypted-media; picture-in-picture" allowFullScreen />
      </figure>;
  }
  if (src) {
    return <figure className="brd-media" data-media-id={id}>
        <video className="brd-media-frame w-full aspect-video" src={src} poster={poster} controls playsInline preload="metadata" />
      </figure>;
  }
  const label = duration ? `Video walkthrough coming soon · ${duration}` : "Video walkthrough coming soon";
  return <Placeholder id={id} kind="video" label={label} description={title} ratio="16 / 9" icon={<PlayIcon />} />;
};

export const Loop = ({id, src, alt, caption}) => {
  if (!src) {
    return <Placeholder id={id} kind="loop" label="Animation coming soon" description={alt} icon={<PlayIcon />} />;
  }
  return <figure className="brd-media" data-media-id={id}>
      <video className="brd-media-frame" src={src} autoPlay muted loop playsInline aria-label={alt} />
      {caption && <figcaption className="brd-media-caption">{caption}</figcaption>}
    </figure>;
};

export const Screenshot = ({id, src, srcDark, alt, caption}) => {
  if (!src) {
    return <Placeholder id={id} kind="screenshot" label="Screenshot coming soon" description={alt} icon={<ImageIcon />} />;
  }
  return <figure className="brd-media" data-media-id={id}>
      <img className="brd-media-frame block dark:hidden" src={src} alt={alt} />
      <img className="brd-media-frame hidden dark:block" src={srcDark || src} alt={alt} />
      {caption && <figcaption className="brd-media-caption">{caption}</figcaption>}
    </figure>;
};

Send a real email campaign in a few minutes using the address Brudcast gave your organization, then
move to your own domain when you're ready.

<Screenshot id="ss-get-started-quickstart-hero-trial-address" alt="The Email channel page showing the notice You're sending from a Brudcast trial address, with the mail@ address and the daily cap" />

<Info>
  **You need:** a Brudcast login and an organization. If you don't have them yet, see
  [Create your account](/get-started/create-your-account). Part 1 needs no DNS changes. Part 2
  needs access to your domain's DNS.
</Info>

<Accordion title="Watch the walkthrough" icon="circle-play">
  <DemoVideo id="V03" title="Send your first email in 5 minutes" duration="3 min" />
</Accordion>

## Part 1: send from your managed sending address

When you created your organization, Brudcast issued it a managed sending address of the form
`mail@<label>.brudcastmail.com`. The dashboard calls it your **Brudcast trial address**. Its DNS is
already set up, so it can send straight away.

<Steps>
  <Step title="Find your trial address">
    Go to **Channels > Email** and open the **Domains** tab. Your trial domain ends in
    `brudcastmail.com`. Open it and select the **Sender Identity** tab to see its **From email** and
    **Display name**. The display name is your organization's name followed by "via Brudcast".

    <Screenshot id="ss-get-started-quickstart-01-sender-identity" alt="The trial domain's Sender Identity tab showing the From email mail@ address and the Display name ending in via Brudcast" />
  </Step>

  <Step title="Add your business address">
    Anti-spam law requires a real postal address in the footer of every campaign, so campaigns won't
    send until yours is on file.

    Go to **Organization Settings**, fill in **Business address** and save.

    If the **Getting Started** checklist on the **Overview** page shows **Add your postal address**,
    selecting **Add address** there opens the same dialog.
  </Step>

  <Step title="Add someone to send to">
    Go to **Contacts > All Contacts** and add yourself as a contact. To bring in a list, use
    **Contacts > Import & Export**. See [Importing contacts](/contacts/importing).
  </Step>

  <Step title="Create the campaign">
    Go to **Campaigns** and select **Create Campaign**.

    1. Give the campaign a name and select the **Email** channel.
    2. Under **Audience**, pick the contact or list you just added.
    3. Under **Content**, write a subject and a body, and choose your trial address as the sender.

    Drafts save automatically. On a trial address, any from address you type is moved to Reply-to,
    so replies still reach you.
  </Step>

  <Step title="Clear the send checklist and send">
    While something is missing, the button in the top right reads **Send · 1 item left** (or
    however many remain). The send checklist beside the composer says what's missing and has a fix
    link for each item.

    When it reads **Send**, select it, then confirm with **Send now**.

    <Screenshot id="ss-get-started-quickstart-02-send-checklist" alt="The campaign composer with the send checklist showing Audience, Content, Sender and Credits all passing and the Send button enabled" />
  </Step>
</Steps>

<Tip>
  To see the email before your audience does, open the campaign's preview, or send your first
  campaign to an audience that contains only your own contact. Then duplicate it and send the copy
  to everyone else. See [Create a campaign](/campaigns/create-a-campaign).
</Tip>

The trial address is capped at 500 emails a day, or your new-account sending limit if that's lower.
New accounts start on 200 a day, and the limit rises over the first month. See
[New-account sending limits](/deliverability/new-account-sending-limits).

## Part 2: send from your own domain

Your own domain lets you send under your own name, lifts the trial cap, and unlocks the send API and
SMTP relay. Neither is offered on a trial address, because Brudcast owns that domain.

<Steps>
  <Step title="Add your sending domain">
    Go to **Channels > Email**, open the **Domains** tab and add the domain you want to send from,
    for example `mail.example.com`. You can also press ⌘K and choose **Add sending domain**.

    <Tip>
      Use a subdomain rather than your root domain. It keeps your sending reputation separate from
      the domain your staff use for everyday mail.
    </Tip>
  </Step>

  <Step title="Publish the DNS records">
    Open the domain and go to its **DNS Records** tab. Brudcast generates five records: an SPF
    delegation, two DKIM records, a DMARC policy and a tracking record. Copy each one into your DNS
    provider exactly as shown.

    <Snippet file="dns-propagation.mdx" />

    Each record is explained in [DNS records](/channels/email/dns-records), including where to find
    it in a typical DNS provider.
  </Step>

  <Step title="Verify the domain">
    On the **DNS Records** tab, run the verification. The domain moves from `unverified` to
    `verified` once the records resolve.

    <Loop id="lp-get-started-quickstart-dns-verify" alt="Running verification on the DNS Records tab and the records turning green as the domain becomes verified" />

    If verification fails, nothing is broken. Wait a little longer for DNS, or see
    [Verify your domain](/channels/email/verify-your-domain) for what each failure means.
  </Step>

  <Step title="Send from it">
    Pick the path that matches how you work.

    <Tabs>
      <Tab title="From the dashboard">
        Create a campaign as in Part 1 and choose a from address on your new domain. To keep it one
        click away, save it on the **Senders** tab of **Channels > Email**. See
        [Create a campaign](/campaigns/create-a-campaign).
      </Tab>

      <Tab title="From your code">
        Open the domain, go to the **Sending Keys** tab and create a key. It's shown only once, so
        copy it. Then post a message to the send API:

        ```bash theme={"system"}
        curl -X POST https://mailing-service.prod.brudcast.com/api/v1/send \
          -H "Authorization: Bearer your_sending_key" \
          -H "Content-Type: application/json" \
          -d '{
            "from": { "name": "Example", "address": "hello@mail.example.com" },
            "to": [{ "address": "jane@example.com" }],
            "subject": "Hello from Brudcast",
            "html": "<p>It works.</p>"
          }'
        ```

        A successful call returns `202 Accepted`:

        ```json theme={"system"}
        {
          "status": true,
          "message": "Email queued for delivery",
          "data": { "jobId": "3f2b8c1e-6a4d-4f0e-9b7a-2d1c5e8f9a01" }
        }
        ```

        The message is queued, not yet delivered. See [Send email over HTTP](/developers/sending/http-api).
      </Tab>

      <Tab title="From your mail stack">
        Open the domain, go to the **SMTP Credentials** tab and create an SMTP user. The password
        is shown only once. Point your application at:

        | Setting               | Value                                                  |
        | --------------------- | ------------------------------------------------------ |
        | Host                  | `out-smtp.prod.brudcast.com`                           |
        | Port                  | `465` with TLS, or `587`, `2525` or `25` with STARTTLS |
        | Username and password | The SMTP user you just created                         |

        See [SMTP relay](/developers/sending/smtp-relay).
      </Tab>
    </Tabs>
  </Step>
</Steps>

## What happens next

* 14 days after your own domain verifies, the trial address retires. The Email channel page shows a
  countdown. Move any campaign still sending from the trial address before then.
* Delivery and engagement appear in **Reports**. To receive them in your own system, add a
  [webhook](/developers/webhooks/overview).
* Each way of sending has its own credential. [Build on Brudcast](/developers/introduction) sets out
  which one you need.

## Troubleshooting

<AccordionGroup>
  <Accordion title="The Send button says “Send · 1 item left”" icon="circle-alert">
    **Why:** something on the send checklist isn't done yet, often the postal address or the sender.

    **Fix:** open the checklist beside the composer and follow the fix link on the item that isn't
    passing. See [Send checklist](/campaigns/send-checklist).
  </Accordion>

  <Accordion title="“Sending keys are not available on a trial address”" icon="circle-alert">
    **Why:** the send API and SMTP need a domain you own. The trial domain belongs to Brudcast.

    **Fix:** follow Part 2 to add and verify your own domain, then create the key there.
  </Accordion>

  <Accordion title="“538 Must issue a STARTTLS command first”" icon="circle-alert">
    **Why:** on ports `587`, `2525` and `25`, the connection must be upgraded with STARTTLS before
    you log in.

    **Fix:** turn on STARTTLS in your mail library, or use port `465` with TLS from the start.
  </Accordion>

  <Accordion title="The send API returns 401 “Unauthorized”" icon="circle-alert">
    **Why:** the sending key is missing, mistyped or deleted, or you sent a platform API key
    (`bk_live_…`) instead.

    **Fix:** send the domain's sending key as `Authorization: Bearer your_sending_key`. See
    [Domain API keys](/channels/email/domain-api-keys).
  </Accordion>
</AccordionGroup>

## Related

<Columns cols={2}>
  <Card title="Email channel overview" icon="mail" href="/channels/email/overview">
    What the trial address can and can't do, and what a verified domain adds.
  </Card>

  <Card title="Add another channel" icon="radio-tower" href="/channels/overview">
    SMS needs an approved sender ID and wallet credits.
  </Card>

  <Card title="Build your audience" icon="users" href="/contacts/importing">
    Import contacts, then organize them into lists and segments.
  </Card>

  <Card title="Protect deliverability" icon="shield-check" href="/deliverability/best-practices">
    The habits that keep your mail welcome.
  </Card>
</Columns>
