Belgelere geç
CLI

openemail broadcasts

Bu ad alanındaki her komut; argümanları, bayrakları ve örnekleriyle.

Komutlar

One message sent to everybody in one or more audiences, a personalised copy for each person, with unsubscribe handled for you.

Buradaki her komut --json, --profile ve --dry-run gibi genel bayrakları da alır. Genel bayraklara bakın

openemail broadcasts preview

Count who a broadcast to some audiences would reach

Kapsamlaraudiences:readOturum açma gerektirir

Kullanım

openemail broadcasts preview --audience-ids <a,b> [flags]
openemail broadcasts preview --data <json|@file|-> [flags]

Returns the numbers send would work from, without sending or writing anything: recipients, the people a broadcast to these audiences would reach now, unsubscribed, the contacts skipped because they have unsubscribed from every one of these audiences they are in, and suppressed, the subscribed contacts skipped because their address is on the suppression list. A contact in several of the audiences counts once.

The count is taken at the moment of the call, so contacts who join or leave before a send change it. Only --audience-ids is sent, so you can pass the same object you are about to give send.

Bayraklar

--audience-ids <a,b>Tekrarlanabilir

1 to 10 audience ids. One that names no audience in the workspace is a 404 audience_not_found. Required, here or in --data.

--data <json|@file|->

The whole body as JSON, inline, from a file with @path, or - for standard input. Flags override its keys.

Örnekler

openemail broadcasts preview --audience-ids aud_4c1b8e2a7d9f05c36b4e8a71,aud_7e3d9a1c5b2f84e06d9a3c51
Read the whole body from a JSON file
openemail broadcasts preview --data @broadcast.json

Şurada da var

API
POST /broadcasts/preview
SDK
broadcasts.preview()

openemail broadcasts send

Send one message to everybody in one or more audiences

Kapsamlaremails:sendaudiences:readOturum açma gerektirir
Onay ister

Kullanım

openemail broadcasts send --audience-ids <a,b> --from <value> [flags]
openemail broadcasts send --data <json|@file|-> [flags]

Creates a broadcast: one message sent to every contact in the audiences you name, as a separate copy for each person. Every copy has exactly one recipient and no cc or bcc, so nobody sees who else it went to, and every copy is an ordinary email with its own msg_ id, events, tracking and webhooks. emails.list({ broadcastId }) lists them. Copies are not filed in the Sent folder, because the broadcast is the record.

The promise settles straight away with the broadcast queued, or scheduled when you pass --scheduled-at, and the sending happens in the background, 50 people at a time. Poll get to follow status and counts as it goes.

Who gets it: every contact in at least one of --audience-ids, counted once however many of them hold it, except a contact that has unsubscribed from every one of those audiences it is in, and except an address on the suppression list. A contact added to one of the audiences after this call but before the sending reaches it is included. counts.recipients is the estimate taken at the call, and preview returns the same count without sending.

subject, html and text take merge fields, filled in from each contact: {{firstName}}, {{lastName}}, {{name}}, {{email}} and {{unsubscribeUrl}}. Each takes a fallback after a bar, so {{firstName|there}} reads there for a contact with no name. The first name is the first word of the contact's name and the last name is the rest. Values are escaped in html, and any other {{…}} is left as written. With template, the same values are passed as props, but only the ones the template declares.

Every copy carries the one-click unsubscribe headers mail clients and the large mailbox providers look for. An html or text body that does not place {{unsubscribeUrl}} itself gets a one-line footer with the link, while a template is sent as it is, so put {{unsubscribeUrl}} in the template. Following the link marks the person unsubscribed in every audience this broadcast went to; their other audiences, their contact and mail sent to them one message at a time are not affected.

The whole send is checked against the plan's monthly sends before anything is written. A broadcast the allowance cannot cover throws 429 send_quota_exceeded and leaves nothing behind, and each copy counts as one send.

Bayraklar

--audience-ids <a,b>Tekrarlanabilir

1 to 10 audience ids such as aud_9f2c4b7e1a0d63d84c5f2e7b. A contact in several of them gets one copy. An id that names no audience in the workspace is a 404 audience_not_found and nothing is sent. Required, here or in --data.

--from <value>

Sender as [email protected], Acme <[email protected]> or { email, name }. It must be an address the key may send as, otherwise 403 from_address_forbidden. Required, here or in --data.

--reply-to <value>

Where replies go, the same for every copy.

--subject <value>

Required unless a template supplies it, at most 998 characters. Takes merge fields.

Varsayılan""
--html <value>

HTML body, at most 1,000,000 characters, with merge fields. Without {{unsubscribeUrl}} in it an unsubscribe footer is added.

--text <value>

Plain text body, at most 1,000,000 characters, with merge fields. Without {{unsubscribeUrl}} in it an unsubscribe line is added.

--template <json|@file|->

A stored template instead of html and text, never beside them. The merge values reach it as props it declares, such as firstName and unsubscribeUrl. JSON shaped as { id: string, version?: number, props?: Record<string, unknown>, slots?: Record<string, unknown> }, inline or from a file with @path.

--tracking <json|@file|->

Open and link tracking for every copy. A field left out follows the address it is sent from when that address set it, and is on otherwise. JSON shaped as { opens?: boolean, clicks?: boolean }, inline or from a file with @path.

--tags <json|@file|->Tekrarlanabilir

Up to 8 tags, keys of 1 to 64 letters, digits, _ or -, values up to 256 characters. Every copy carries them, plus broadcast_id, which the server adds.

Varsayılan{}
--scheduled-at <when>

A Date, an ISO 8601 instant or a duration such as PT2H or P1D, in the future and at most 365 days out. Left out, the sending starts straight away.

--idempotency-key <value>

Your own key, 1 to 255 characters of letters, digits, _, ., : or -. Left out, the SDK makes one for the call, so its own retries never send twice. Sending the same key again answers with the broadcast it created instead of a new one; the same key with a different body is a 422 idempotency_key_reuse.

--data <json|@file|->

The whole body as JSON, inline, from a file with @path, or - for standard input. Flags override its keys.

Örnekler

The required values only
openemail broadcasts send --audience-ids aud_4c1b8e2a7d9f05c36b4e8a71 --from 'Acme <[email protected]>'
With optional flags
openemail broadcasts send --audience-ids aud_4c1b8e2a7d9f05c36b4e8a71 --from 'Acme <[email protected]>' --subject '{{firstName|Hello}}, the September release is out' --html '<p>Hi {{firstName|there}},</p><p>Here is what changed this month.</p><p><a href="{{unsubscribeUrl}}">Unsubscribe</a></p>' --scheduled-at PT2H
Read the whole body from a JSON file
openemail broadcasts send --data @broadcast.json
Skip the confirmation, for scripts
openemail broadcasts send --audience-ids aud_4c1b8e2a7d9f05c36b4e8a71 --from 'Acme <[email protected]>' --yes

Şurada da var

API
POST /broadcasts
SDK
broadcasts.send()

openemail broadcasts list

List one page of broadcasts, newest first

Kapsamlaremails:readOturum açma gerektirirTakma adlarls

Kullanım

openemail broadcasts list [flags]

Returns one page of the broadcasts in the workspace, newest first, each with live counts. --audience-id keeps the ones that were sent to that audience, alone or beside others.

Paging is keyset: --limit takes 1 to 100 and defaults to 25, and nextCursor, the id of the last broadcast on the page, goes back as --cursor while hasMore is true. Send the same --audience-id with every page.

The individual messages are not here. List the copies of one broadcast with emails.list({ broadcastId }).

Add --all to walk every page: a table on a terminal, one JSON object per line when piped or with --ndjson, and one { items, hasMore, nextCursor } document with --json. --max <n> stops after that many items.

Bayraklar

--audience-id <value>

Only the broadcasts that included this audience. An id that names no audience answers an empty page.

--limit <n>

Rows per page, a whole number from 1 to 100. The server defaults to 25.

Varsayılan25
--cursor <value>

The nextCursor from the previous page, a broadcast id. One that names no broadcast in the workspace is a 400 invalid_cursor.

--all

Fetch every page and stream the items as they arrive.

--max <n>

Stop after this many items. Implies --all.

--ndjson

Print every item as one JSON object per line. Implies --all

Örnekler

openemail broadcasts list
With optional flags
openemail broadcasts list --audience-id aud_4c1b8e2a7d9f05c36b4e8a71 --limit 10
Walk every page and stop after 100 items
openemail broadcasts list --all --max 100
One JSON object per line when piped
openemail broadcasts list --all > broadcasts.ndjson

Şurada da var

API
GET /broadcasts
SDK
broadcasts.list()

openemail broadcasts get

Read one broadcast and how far it has got

Kapsamlaremails:readOturum açma gerektirirTakma adlarshowview

Kullanım

openemail broadcasts get <id> [flags]

Returns one broadcast with counts read live from its copies, which makes this the call to poll while it sends.

status moves from scheduled or queued to sending and settles on sent once every copy handed over has gone out or failed. It reads sending for as long as copies are still waiting, even after the last person was reached and completedAt was set. cancelled and failed are the other two ends, and on failed lastError says why: the from address can no longer be sent from, the template stopped resolving, the plan ran out part way, the sending itself kept failing, or not one copy could be written.

counts.recipients is the estimate taken when it was created. created is the copies written, one per person reached, skipped the people passed over because their address was suppressed by then, and failedToQueue the people whose copy could not be written. queued, sending, sent, failed and cancelled count the copies by the state each one is in now.

Argümanlar

<id>Zorunlu

A brd_ id from send or list.

Örnekler

openemail broadcasts get brd_5a8c1e3f7b2d94a06c8e1f3b
Print the raw JSON
openemail broadcasts get brd_5a8c1e3f7b2d94a06c8e1f3b --json

Şurada da var

API
GET /broadcasts/{id}
SDK
broadcasts.get()

openemail broadcasts stats

Read how a broadcast performed

Kapsamlaremails:readOturum açma gerektirir

Kullanım

openemail broadcasts stats <id> [flags]

Resolves with the totals and a series for one broadcast. totals counts copies sent, delivered, bounced, complained (reported as spam) and failed, pending for the ones still waiting, and people who opened, clicked and unsubscribed, with opens and clicks as event counts. series is sparse and oldest first: one bucket per grain in which something happened, counting each person once at the first time it happened to them, so it adds up to the totals.

Pass days or minutes to also read what happened lately. window then counts the copies delivered, bounced, reported as spam, opened, clicked and unsubscribed inside it, and series keeps only its buckets, while totals still covers the whole broadcast. Without either, window is null.

Argümanlar

<id>Zorunlu

A brd_ id from send or list.

Bayraklar

--grain <value>

Bucket width: minute, hour or day, defaulting to hour.

Varsayılan"hour"
--offset-minutes <n>

Minutes east of UTC to cut the buckets in, from -840 to 840. Pass -new Date().getTimezoneOffset() for the local zone.

Varsayılan0
--days <n>

Reads a window of this many days too, from 1 to 1095. It starts at the beginning of its first grain bucket and ends now.

--minutes <n>

The window in minutes, from 1 to 1576800, which wins over days when both are sent.

Örnekler

The required values only
openemail broadcasts stats brd_5a8c1e3f7b2d94a06c8e1f3b
With optional flags
openemail broadcasts stats brd_5a8c1e3f7b2d94a06c8e1f3b --grain day
Print the raw JSON
openemail broadcasts stats brd_5a8c1e3f7b2d94a06c8e1f3b --json

Şurada da var

API
GET /broadcasts/{id}/stats
SDK
broadcasts.stats()

openemail broadcasts analytics

Read how broadcasts did over a time window

Kapsamlaremails:readOturum açma gerektirir

Kullanım

openemail broadcasts analytics [flags]

Returns the numbers behind the Analytics tab of the Broadcasts page in one request: how the live broadcasts sent inside a window did, added up in totals and cut to grain in series, and one row per broadcast in broadcasts so they can be compared.

A copy counts when it was sent inside the window, and everything that happened to it afterwards counts with it, so an open today of a copy sent last week is in a 30 day window but not in a 1 day one. Test mode broadcasts are left out. totals and series add up the broadcasts named in --broadcast-ids, or every one when it is left out, while broadcasts always lists every broadcast in the window, newest first.

series is sparse and oldest first: a bucket in which nothing happened has no entry, so a chart must fill the gaps. It counts each person once, at the first time it happened to them. grain sets the bucket width and the key shape, YYYY-MM-DD, YYYY-MM-DDTHH or YYYY-MM-DDTHH:MM, and --offset-minutes shifts the boundaries so days break where the reader's day does. The window starts at the beginning of its oldest bucket, reported as since, and ends now, reported as until.

Bayraklar

--broadcast-ids <a,b>Tekrarlanabilir

Up to 50 broadcast ids for totals and series to add up, sent comma separated. Leave it out, or pass an empty array, for every broadcast in the window. An id with no copy in the window adds nothing, and more than 50 is a 422.

--days <n>

Window length in days, from 1 to 1095, defaulting to 30.

Varsayılan30
--minutes <n>

Window length in minutes, from 1 to 1576800, which wins over days when both are sent.

--grain <value>

Bucket width: minute, hour or day, defaulting to day.

Varsayılan"day"
--offset-minutes <n>

Minutes east of UTC to cut the buckets in, from -840 to 840, defaulting to 0. Pass -new Date().getTimezoneOffset() for the local zone.

Varsayılan0

Örnekler

openemail broadcasts analytics
With optional flags
openemail broadcasts analytics --days 90
Print the raw JSON
openemail broadcasts analytics --json

Şurada da var

API
GET /broadcasts/analytics
SDK
broadcasts.analytics()

openemail broadcasts list-recipients

List who a broadcast went to and what happened to each copy

Kapsamlaremails:readOturum açma gerektirir

Kullanım

openemail broadcasts list-recipients <id> [flags]

Resolves one page of the people a broadcast went to, one row per copy, sorted by address. Each row says the copy's status, when it was sent and delivered, whether it bounced or was reported as spam, how often it was opened and clicked, and whether the person unsubscribed from one of the broadcast's audiences after it went out.

Opens and clicks leave out image proxies and link scanners, and stay 0 when the broadcast went out with tracking off. emailId is the copy's msg_ id, which getRecipient reads with its content and emails.get reads as a sent email.

Add --all to walk every page: a table on a terminal, one JSON object per line when piped or with --ndjson, and one { items, hasMore, nextCursor } document with --json. --max <n> stops after that many items.

Argümanlar

<id>Zorunlu

A brd_ id from send or list.

Bayraklar

--filter <value>

Keeps one group: pending, sent, delivered, opened, not_opened (sent and never opened), clicked, bounced, complained, failed (failed or cancelled) or unsubscribed. BROADCAST_RECIPIENT_FILTERS names them.

--q <value>

Searches the address and the name, ignoring case.

--limit <n>

Page size, from 1 to 200. The server defaults to 50.

Varsayılan50
--cursor <value>

The nextCursor of the previous page. Send the same filter and q with it.

--all

Fetch every page and stream the items as they arrive.

--max <n>

Stop after this many items. Implies --all.

--ndjson

Print every item as one JSON object per line. Implies --all

Örnekler

The required values only
openemail broadcasts list-recipients brd_5a8c1e3f7b2d94a06c8e1f3b
With optional flags
openemail broadcasts list-recipients brd_5a8c1e3f7b2d94a06c8e1f3b --filter bounced
Walk every page and stop after 100 items
openemail broadcasts list-recipients brd_5a8c1e3f7b2d94a06c8e1f3b --all --max 100
One JSON object per line when piped
openemail broadcasts list-recipients brd_5a8c1e3f7b2d94a06c8e1f3b --all > broadcasts.ndjson

Şurada da var

API
GET /broadcasts/{id}/recipients
SDK
broadcasts.listRecipients()

openemail broadcasts get-recipient

Read one person's copy of a broadcast

Kapsamlaremails:readOturum açma gerektirir

Kullanım

openemail broadcasts get-recipient <id> <email-id> [flags]

Resolves with one copy: the same row listRecipients gives, plus the subject, html and text exactly as that person received them, with the merge fields filled in and their own unsubscribe link. The HTML is from before open and click tracking was added.

Argümanlar

<id>Zorunlu

A brd_ id from send or list.

<email-id>Zorunlu

The emailId of the copy, from listRecipients.

Örnekler

openemail broadcasts get-recipient brd_5a8c1e3f7b2d94a06c8e1f3b msg_01dad25067bc4dac966d515d
Print the raw JSON
openemail broadcasts get-recipient brd_5a8c1e3f7b2d94a06c8e1f3b msg_01dad25067bc4dac966d515d --json

Şurada da var

API
GET /broadcasts/{id}/recipients/{emailId}
SDK
broadcasts.getRecipient()

openemail broadcasts cancel

Stop a broadcast that is scheduled, queued or still sending

Kapsamlaremails:sendOturum açma gerektirir
Onay ister

Kullanım

openemail broadcasts cancel <id> [flags]

Stops a broadcast that is scheduled, queued or sending, including one that has reached everybody while some copies are still waiting to go. Nobody else is added, and every copy still waiting is cancelled. A copy already being handed over finishes, and copies that have gone cannot be recalled, so counts.sent keeps them and counts.cancelled shows what was stopped.

Once every copy has gone out there is nothing left to stop, and the call throws 409 broadcast_not_cancellable. A failed broadcast with copies still waiting can be cancelled to stop them, and one with nothing waiting is refused the same way. Cancelling a broadcast that is already cancelled resolves with it as it stands, so the call is safe to repeat, and the SDK retries it after a network failure.

Argümanlar

<id>Zorunlu

The brd_ id to cancel.

Örnekler

openemail broadcasts cancel brd_5a8c1e3f7b2d94a06c8e1f3b
Skip the confirmation, for scripts
openemail broadcasts cancel brd_5a8c1e3f7b2d94a06c8e1f3b --yes

Şurada da var

API
POST /broadcasts/{id}/cancel
SDK
broadcasts.cancel()