← BrainerceCONTENT HISTORY

Update to Brainerce

Snapshot Oct 24, 2026 · 18:05 UTC · version 2.0.4

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save Brainerce and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Send a marketing email to a Brainerce store's customers safely: pick the audience, write or reuse the email, check who it reaches, then send or schedule it. Use when the merchant says email my customers, send a newsletter, announce the sale by email, email my VIP buyers, save this as a template, schedule an email for Friday, who would get this email, or make a customer segment. Covers saved customer segments, campaign templates, drafting, the recipient count check and the send itself. A send reaches real people and cannot be recalled, so this skill puts the count check and the merchant's yes before it. For store owners, not developers. Do not choose this for the signup welcome coupon or for a promotion itself (brainerce-launch-a-sale), for a fundraising drive (a donation campaign), or for transactional order emails. Keywords: email campaign, newsletter, email blast, segment, audience, template, schedule send, mailing list, send email to customers.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 1072
    },
    {
      "relative_path": "assets/icon.png",
      "size_in_bytes": 3208
    }
  ],
  "name": "brainerce-email-campaigns",
  "skill_md_contents": "---\nname: brainerce-email-campaigns\ndescription: 'Send a marketing email to a Brainerce store''s customers safely: pick the audience, write or reuse the email, check who it reaches, then send or schedule it. Use when the merchant says email my customers, send a newsletter, announce the sale by email, email my VIP buyers, save this as a template, schedule an email for Friday, who would get this email, or make a customer segment. Covers saved customer segments, campaign templates, drafting, the recipient count check and the send itself. A send reaches real people and cannot be recalled, so this skill puts the count check and the merchant''s yes before it. For store owners, not developers. Do not choose this for the signup welcome coupon or for a promotion itself (brainerce-launch-a-sale), for a fundraising drive (a donation campaign), or for transactional order emails. Keywords: email campaign, newsletter, email blast, segment, audience, template, schedule send, mailing list, send email to customers.'\ncompatibility: ChatGPT, Claude Code, Claude Desktop, Cursor\nmaintainer: Brainerce\nmetadata:\n  author: Brainerce\n  version: '1.0.0'\n---\n\nGet an email to the right customers without a mistake the merchant cannot undo. Everything before the send is reversible. The send is not.\n\n## Core principle\n\nA sent email is read by a person and cannot be recalled. So the order is fixed: decide who, write it, count who it reaches, tell the merchant the number, and only then send. Never skip the count, and never send on a merchant's general wish (\"email everyone about the sale\") without showing them the recipient number first.\n\n## Find the tools\n\nMost of these are not in the tool list you can see in ChatGPT. Find them with `search_tools` and run them with `call_read_tool`, `call_write_tool` or `call_destructive_tool`. Search with the platform's nouns, not the merchant's words: `campaign`, `campaign audience`, `campaign template`, `customer segment`, `campaign schedule`, `campaign block`. \"Newsletter\" in a search finds the signup welcome offer, not this.\n\nSegment and template tools need a signed-in dashboard user (OAuth). An API key is refused with a message that says so.\n\n## When NOT to use this skill\n\n- \"A code for people who sign up to my newsletter\": that is the newsletter welcome offer, a coupon, under `brainerce-launch-a-sale`.\n- A fundraising drive with a goal and a donation page: a donation campaign (`create_donation_campaign`), not an email.\n- Order confirmation, shipping and password emails: those are transactional templates, not campaigns.\n- A discount or sale itself: `brainerce-launch-a-sale`.\n\n---\n\n## Step 1: who gets it\n\nPick one of two audiences.\n\n- **A saved segment**, for a group the merchant will want again (\"repeat buyers\", \"customers who have not ordered in 90 days\"). Look first with `list_customer_segments`. If none fits, build one.\n- **A hand-picked list** of customer ids (`audienceType` SELECTION) or a one-off filter (`audienceType` FILTER with `audienceFilterJson`).\n\n### Building a segment\n\nA segment is a condition tree: `{ kind: \"group\", operator: \"AND\" | \"OR\", conditions: [...] }`, where each leaf is `{ kind: \"condition\", field, op, value }`. The tool description lists every field and the operators it accepts. Use only those: an unknown field or operator is refused, not guessed.\n\n1. **`preview_customer_segment`** with the tree. It returns how many customers match and up to five names, and saves nothing. Always run it first.\n2. Tell the merchant the number in plain words (\"that is 214 customers\") and ask if it looks right.\n3. **`create_customer_segment`** with a name. The name must be unique in the store.\n\n⛔ A tree that matches nobody, or everybody, is almost always a wrong condition. A segment of 0 is not a result to save: check the field and the value.\n\n## Step 2: the email\n\n- **Start from a saved template** when the merchant has one: `list_campaign_templates`, then `get_campaign_template` for the body. Saving a new one is `create_campaign_template`. A template sends nothing and is not linked to any campaign, because a campaign keeps its own copy.\n- **Build it fresh** with `get_campaign_starter` (the branded shell) and `insert_campaign_block` for each block. A `product` block renders real catalogue cards with image, price and link, so never hand-build product cards.\n\nMerge fields work only from this list: `{{firstName}}`, `{{lastName}}`, `{{storeName}}`, `{{currentYear}}`, `{{unsubscribeUrl}}`, `{{supportEmail}}`, `{{supportPhone}}`, `{{brand.primaryColor}}`, `{{brand.secondaryColor}}`, `{{brand.logo}}` and the `{{lastOrder.*}}` fields. Any other `{{placeholder}}` is not substituted: it is refused when the text is checked, or it renders empty and leaves a dead link. `{{lastOrder.*}}` is empty for anyone who never ordered, so wrap it in `{{#if lastOrder}}...{{/if}}`.\n\n## Step 3: create the draft\n\n`create_campaign` makes a DRAFT. Nothing is sent and nobody is emailed. `name` is internal; `subject` is what lands in the inbox. For a saved segment pass `audienceType: \"FILTER\"` and `sourceSegmentId`. Offer a second subject line (`subjectB`) only if the merchant wants a split test: it sends each subject to half the audience and reports both, with no automatic winner.\n\nTo change a draft use `update_campaign`. Only the fields you pass change. ⛔ Changing who receives it, or switching the subject test on or off, throws away the resolved audience, so run Step 4 again afterwards. A campaign that has started sending cannot be edited: make a new one.\n\n## Step 4: count, then confirm\n\n1. **`resolve_campaign_audience`** works out who it would reach and moves the draft to READY. It still sends nothing. It returns the recipient count.\n2. **Tell the merchant the count and wait for their yes.** Say who it is going to and the subject line, not only the number.\n\n> ✓ This goes to 214 customers who bought twice or more, subject \"Early access: the new collection\". Send it now, or schedule it?\n\n## Step 5: send or schedule\n\n`send_campaign` needs the campaign id, `confirmedRecipientCount` equal to the number resolve returned, and `confirmSend: true`. If the audience moved since, the send is refused rather than reaching more people than were shown.\n\nTo schedule, add `scheduledAt` as an ISO 8601 instant in UTC (at least 5 minutes and at most 90 days ahead) and `scheduledTimezone`, which must be the store's own timezone from `get_store`. Convert the merchant's local time to UTC using that zone, and repeat date, time and zone back to them before booking. A booking fires on its own with nobody watching.\n\nTo move or stop a booking: `reschedule_campaign`, `cancel_campaign_schedule`.\n\n### When a send is refused, say why and where to fix it\n\nNothing is sent and no credits are charged in any of these.\n\n- **No postal address** (`CAMPAIGN_NO_POSTAL_ADDRESS`): the commonest. Read `get_email_settings`, then send the merchant to Settings, Email, Business postal address in the dashboard. `update_email_settings` cannot set it.\n- No reply-to address (`CAMPAIGN_NO_REPLY_TO`), nobody left in the audience (`CAMPAIGN_NO_RECIPIENTS`), more than 50,000 recipients in one send (`CAMPAIGN_TOO_MANY_RECIPIENTS`), the daily limit already used (`CAMPAIGN_DAILY_LIMIT`), or too few credits (`CAMPAIGN_INSUFFICIENT_CREDITS`).\n\nA verified sending domain is not required to send.\n\n## Read the result\n\n`get_campaign` gives the status, the recipient count and the results: sent, failed, bounced, clicked and unsubscribed. \"How many clicked the button\" is `get_campaign_links`, because the clicked count in `get_campaign` only says a reader clicked something. `list_campaigns` with `status: SCHEDULED` shows what is booked to go out later. Report what the numbers say and stop: do not offer to resend to people who did not open it unless the merchant asks.\n\n## Never\n\n- Send without showing the recipient count and getting a yes in the same conversation.\n- Describe a draft as sent, or a booked send as delivered.\n- Build a segment from a guess at a field name. Use the fields the tool lists.\n- Use a segment name or a customer's email address in a place the merchant did not ask for.\n"
}

SHA-256 of public snapshot: 7527b78ed52d361de7e4ecfc88f5d71aa15f277e4d50eee6c9eb0255a628dd78