Resources

Grab-and-go resources 🗂

Checklists, cheat sheets, snippet libraries, and reference material for SFMC practitioners. All free, all copy-ready.

Checklist
Pre-send checklist
Run through this before every campaign send.
Content
  • Subject line is finalised and tested for personalisation errors
  • Preheader text is set and not left blank
  • All images have alt text
  • All links tested and go to correct URLs
  • Unsubscribe link is present and working
  • Physical mailing address is in the footer
Personalisation
  • Previewed as 5+ different subscriber profiles
  • AMPscript fallbacks set for all personalised fields
  • Dynamic content blocks tested for each variant
  • Test send sent to real inbox (check mobile + desktop)
Audience
  • Correct audience DE selected (double-check!)
  • Audience count is as expected (not 0, not unusually large)
  • Suppression lists applied (unsubscribes, bounces, competitors)
  • Correct Business Unit selected
  • Correct send classification (Commercial vs Transactional)
Send settings
  • From Name is brand-consistent
  • From Address is authenticated (SPF/DKIM)
  • Send time accounts for the audience's timezone
  • Stakeholder approval received (if required)
Code library
AMPscript quick-reference snippets
Common patterns ready to copy into your emails.
AMPscript Safe first name with fallback
%%[ SET @fn = IIF(Empty(AttributeValue("FirstName")), "there", AttributeValue("FirstName")) ]%%
Hi %%=v(@fn)=%%,
AMPscript Conditional content by country
%%[ SET @country = AttributeValue("Country") ]%%
%%[ IF @country == "UK" THEN ]%%
  <p>Call us: 0800 123 456</p>
%%[ ELSEIF @country == "US" THEN ]%%
  <p>Call us: 1-800-123-456</p>
%%[ ELSE ]%%
  <p>Visit our website for your local number.</p>
%%[ ENDIF ]%%
AMPscript Format a date for display
%%[
  SET @rawDate  = AttributeValue("ExpiryDate")
  SET @niceDate = FormatDate(@rawDate, "d MMMM yyyy")
]%%
Offer expires: %%=v(@niceDate)=%%
AMPscript Lookup from a second Data Extension
%%[
  SET @sk   = AttributeValue("SubscriberKey")
  SET @tier = Lookup("LoyaltyDE", "Tier", "SubscriberKey", @sk)
  IF Empty(@tier) THEN
    SET @tier = "Standard"
  ENDIF
]%%
Your tier: %%=v(@tier)=%%

→ Full AMPscript guide with 20+ examples

Code library
SQL quick-reference queries
Copy-paste queries for common SFMC use cases.
SQL Active subscribers (opened in 90 days)
SELECT DISTINCT s.SubscriberKey, s.EmailAddress, s.FirstName
FROM [Master_Subscribers] s
INNER JOIN [_Open] o ON s.SubscriberKey = o.SubscriberKey
  AND o.EventDate >= DATEADD(day, -90, GETDATE())
WHERE s.OptInStatus = 'Subscribed'
SQL New subscribers (last 24 hours)
SELECT SubscriberKey, EmailAddress, FirstName, JoinDate
FROM [Master_Subscribers]
WHERE JoinDate >= DATEADD(hour, -24, GETDATE())
  AND OptInStatus = 'Subscribed'
SQL Unengaged 180+ days (sunset suppression)
SELECT s.SubscriberKey, s.EmailAddress
FROM [Master_Subscribers] s
WHERE s.OptInStatus = 'Subscribed'
  AND s.SubscriberKey NOT IN (
    SELECT DISTINCT SubscriberKey FROM [_Open]  WHERE EventDate >= DATEADD(day,-180,GETDATE())
    UNION
    SELECT DISTINCT SubscriberKey FROM [_Click] WHERE EventDate >= DATEADD(day,-180,GETDATE())
  )
SQL Birthday segment — birthday is tomorrow
SELECT SubscriberKey, EmailAddress, FirstName, DateOfBirth
FROM [Master_Subscribers]
WHERE
  DATEPART(month, DateOfBirth) = DATEPART(month, DATEADD(day,1,GETDATE()))
  AND DATEPART(day,   DateOfBirth) = DATEPART(day,   DATEADD(day,1,GETDATE()))
  AND OptInStatus = 'Subscribed'

→ Full SQL reference guide with 15+ queries

Reference guide
Deliverability quick reference
The most important deliverability concepts at a glance.
Authentication records
SPFAuthorises sending IPs for your domain. DNS TXT record.
DKIMSigns messages cryptographically. Configured in SAP + DNS.
DMARCPolicy for auth failures. Start with p=none, progress to quarantine/reject.
Healthy metrics benchmarks
Delivered rate>98%
Bounce rate<2%
Spam complaints<0.08%
Unsubscribe rate<0.5%
Bounce types
HardPermanent failure — mark as Bounced immediately
SoftTemporary — retry; moves to Held after threshold
TechnicalInfrastructure issue — retry
IP warming milestones
Week 1~5,000 emails/day to best-engaged subscribers
Week 2~20,000/day
Week 3~50,000/day
Week 4+Scale gradually toward full volume
Reference
SFMC architecture overview
Key components and how they relate to each other.
ComponentRoleTalks to
Contact Builder Defines the contact data model and DE relationships All studios, Journey Builder, Einstein
Email Studio Batch email sends, subscriber management, tracking Content Builder, DEs, Automation Studio
Content Builder Centralised asset library (emails, templates, images) Email Studio, Journey Builder, Mobile Studio
Journey Builder Automated multi-step customer journeys Email Studio, Mobile Studio, Salesforce CRM, APIs
Automation Studio Scheduled backend tasks (SQL, imports, exports) DEs, SFTP, Email Studio, Cloud Pages
Analytics Builder Cross-send reporting and dashboards System Data Views, DEs
Mobile Studio SMS, push notifications, group messaging Journey Builder, DEs
MC Connect Integration bridge between SFMC and Salesforce CRM Salesforce CRM, Journey Builder, Email Studio
Cloud Pages SFMC-hosted landing pages and microsites DEs, AMPscript, SSJS, Automation Studio
REST/SOAP API Programmatic access to all SFMC functionality Everything — the integration layer
External links
Official Salesforce resources
These links go to Salesforce documentation and tools.

Keep learning

New content, guides, and resources every week. Subscribe to stay current.