Requirements
- A Loops team with Content API access enabled
- A sending domain configured in Loops
Connect Loops
1
Create an API key
In Loops, open Settings → API, create a key and copy it.
2
Connect the brand in Brew
Select your brand in Brew and open Integrations → Loops → Setup. Paste the key and click Connect. Brew checks the key and campaign access without creating a draft.
Create an Editable Draft
- Open your email in Brew and choose Send → Export template → Loops.
- Check the name, subject and preview text, then click Create draft.
- Click See draft to open the campaign in Loops.
- Review the layout, personalization, sender and audience in Loops before sending.
- Nested cards become flat editable sections, keeping their text, links and inner card colors
- Nested column rows stack within their parent column, and wider rows split into groups of up to four columns
- Table data stays editable as row content
- Decorative Brew textures use their solid fallback color; other inline background artwork becomes an image above its text
- 100KB of LMX content
- Public HTTPS PNG, JPEG, GIF or WebP images
- 4MB per image and 20MB of images per export
Keep the Design With a ZIP
This option requires a paid Brew plan. It does not require a connected Loops account in Brew.- In Brew, choose Send → Export template → Loops ZIP and click Download ZIP.
- In your Loops email, choose Code styling and upload the downloaded ZIP.
- Confirm the subject and preview text in Loops. Preview the email and send yourself a test before using it with your audience.
html or body onto an inner table or container, and use plain CSS selectors. Brew rejects stylesheets it cannot preserve when MJML replaces the document shell.
Replace Brew merge tags and fallbacks with the appropriate Loops tags before downloading a ZIP. Existing Loops tags stay in the file. Brew uses Loops’ unsubscribe link in the exported footer.
ZIP download and upload are manual steps. For programmatic creation, use the editable draft export.
From an Agent or Code
Connect Loops to the brand in the app first. Then callexport_email over MCP, or send POST /v1/emails/{emailId}/export with provider set to loops.
dryRun to false to create the draft.
The response’s templateId is the Loops campaign ID. If an error includes a partial draft ID, inspect that draft in Loops before starting another export. Follow the idempotency guidance when retrying.
The TypeScript SDK accepts client.emails.export({ emailId, provider: 'loops' }). The CLI accepts brew-cli emails export EMAIL_ID --provider loops. Use a release that includes Loops export support.