feat(web): flatten frontmatter — drop slug, flat tags/cats, auto-bump updatedDate [skip ci]
diff --git a/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md b/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md index 0cc2816..e535654 100644 --- a/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md +++ b/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md @@ -1,17 +1,16 @@ --- title: "How we built a 9,000-person SMS list" -slug: how-we-built-a-9000-person-sms-list pubDate: 2026-04-05T20:04:48.000Z updatedDate: 2026-04-05T20:04:48.000Z draft: false excerpt: "The SMS list started at zero in early 2024. By January 2026, it was over 9,000 contacts — past attendees, ticket buyers, WhatsApp group members, and cold subscribers from Meta … Read more" categories: - - { name: Guides, slug: guides } + - Guides tags: - - { name: format-how-to, slug: format-how-to } - - { name: growth, slug: growth } - - { name: sms, slug: sms } - - { name: tone-instructional, slug: tone-instructional } + - format-how-to + - growth + - sms + - tone-instructional featured: src: https://cdn.slist.net/posts/how-we-built-a-9000-person-sms-list/cover.png alt: "Abstract dark data visualization rising from ground"content: rewrite image URLs from slist.net/wp-content to cdn.slist.net/posts/<slug>/
diff --git a/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md b/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md index 4e577c0..0cc2816 100644 --- a/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md +++ b/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md @@ -13,7 +13,7 @@ tags: - { name: sms, slug: sms } - { name: tone-instructional, slug: tone-instructional } featured: - src: https://slist.net/wp-content/uploads/ai_69d2a7cba3e6e9.14544173.png + src: https://cdn.slist.net/posts/how-we-built-a-9000-person-sms-list/cover.png alt: "Abstract dark data visualization rising from ground" legacy_wp_id: 15964 ---fix(web): point upload URLs at slist.net (cdn.slist.net not wired up yet)
diff --git a/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md b/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md index 4493d73..4e577c0 100644 --- a/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md +++ b/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md @@ -13,7 +13,7 @@ tags: - { name: sms, slug: sms } - { name: tone-instructional, slug: tone-instructional } featured: - src: https://cdn.slist.net/ai_69d2a7cba3e6e9.14544173.png + src: https://slist.net/wp-content/uploads/ai_69d2a7cba3e6e9.14544173.png alt: "Abstract dark data visualization rising from ground" legacy_wp_id: 15964 ---feat(web): visually mirror slist.net blog (index + single post)
diff --git a/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md b/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md index af0c02a..4493d73 100644 --- a/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md +++ b/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md @@ -4,6 +4,17 @@ slug: how-we-built-a-9000-person-sms-list pubDate: 2026-04-05T20:04:48.000Z updatedDate: 2026-04-05T20:04:48.000Z draft: false +excerpt: "The SMS list started at zero in early 2024. By January 2026, it was over 9,000 contacts — past attendees, ticket buyers, WhatsApp group members, and cold subscribers from Meta … Read more" +categories: + - { name: Guides, slug: guides } +tags: + - { name: format-how-to, slug: format-how-to } + - { name: growth, slug: growth } + - { name: sms, slug: sms } + - { name: tone-instructional, slug: tone-instructional } +featured: + src: https://cdn.slist.net/ai_69d2a7cba3e6e9.14544173.png + alt: "Abstract dark data visualization rising from ground" legacy_wp_id: 15964 --- The SMS list started at zero in early 2024. By January 2026, it was over 9,000 contacts — past attendees, ticket buyers, WhatsApp group members, and cold subscribers from Meta ads. Here’s the exact infrastructure and the tactics that built it.feat(web): full posts+pages sync, browseable UI, curated pages allowlist
diff --git a/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md b/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md new file mode 100644 index 0000000..af0c02a --- /dev/null +++ b/content/posts/2026/how-we-built-a-9000-person-sms-list/index.md @@ -0,0 +1,57 @@ +--- +title: "How we built a 9,000-person SMS list" +slug: how-we-built-a-9000-person-sms-list +pubDate: 2026-04-05T20:04:48.000Z +updatedDate: 2026-04-05T20:04:48.000Z +draft: false +legacy_wp_id: 15964 +--- +The SMS list started at zero in early 2024. By January 2026, it was over 9,000 contacts — past attendees, ticket buyers, WhatsApp group members, and cold subscribers from Meta ads. Here’s the exact infrastructure and the tactics that built it. + +## Source one: the click-to-text ad + +The primary growth engine is a deep link that opens the user’s SMS app with a pre-filled keyword. The link format: `sms:+18339124216?body=NYC`. User clicks the ad, their phone opens the messaging app, “NYC” is already typed, they hit send, and they’re auto-subscribed via a Twilio toll-free number. + +This runs as a Meta ad CTA across feed, reels, and stories. The CTA text reads “subscribe” — it feels more natural for SMS than “sign up.” Reels placement drives the best results for SMS acquisition: 4.7% link CTR at $0.22 per link click. + +The evergreen cold ad CTA alternates between “FOLLOW FOR NYC RAVES” and “TEXT ‘DARK’ TO 833-912-4216” depending on the campaign objective. + +## Source two: ticket buyer exports + +Every ticket platform — Posh, Resident Advisor, DICE, Shotgun — collects phone numbers at checkout. After each event, export the buyer list as CSV. These are the highest-value contacts: people who already spent money on your event. + +The deduplication process is critical. Normalize all phone numbers to E.164 format (+1XXXXXXXXXX). Dedup by phone number, not email. Keep city and state data for geographic targeting on Meta. Tag everyone by type: DJ, Booked Artist, Slister, past buyer. +Diff truncated (64 lines total). View full commit on GitHub →