Key Takeaways
- Open-source list segmentation is migrations + queries: consent, language, timezone, STOP, OTP-only — not a contacts.csv in the repo.
- Do not rewrite the core product segment how-to. Hub E is how you keep PII out of GitHub.
- Fixtures use fake E.164. Real MSISDNs stay in your DB, encrypted backups, or a vault — never in issues.
- A blended “all customers” send from a self-hosted panel still trains filters and wakes suppressed numbers.
- Free contact cap is 300. Hygiene is still required on paid plans.
- You bring the phone and operator credit. We meter devices and send volume.
Segments are schema, not a gist
Open source / GitHub how to segment contact lists: you model who may receive promo, who is OTP-only, who is quiet-hours, and who already sent STOP — then you query that in workers. Dumping Excel into a public repo is not segmentation. Hub: open source Android SMS gateway. Product: contacts, lists, and segments.
A contacts.csv in the repo is a data-protection incident that happens to have a SHA.
Not the product lists how-to
Hosted lists live on core how to segment contact lists. This spoke is migrations, .gitignore, and code review. CSV column mapping belongs on import docs, not here. Live API fields: Developer Center.
What belongs in git
| Artifact | In git? | Why |
|---|---|---|
| list_id, consent_at, source, tz, lang, otp_only | Schema / migrations yes | The query is the product |
| Real MSISDNs, DLR payloads, OTP bodies | Never | PII and secrets; use fixtures |
| STOP join in the send worker | Yes, reviewed | A missing join is a blast |
| Sample “customers.csv” from staging | No — gitignore + fake rows | Staging is still people |
Consent columns you actually query
Segment without consent_at and source is a mailing list you cannot defend. Pair with STOP in the same stack. Quiet hours are a timezone segment, not a hope in copy. Encoding (GSM-7 vs UCS-2) is a language segment because it burns airtime.
OTP is a list you never blast
Login recipients are not a promo cohort. Isolate device pools too: OTP and 2FA SMS on Android. Import hygiene: CSV best practices.
Cost
Devices + platform send volume. You buy Jazz/Telenor/AT&T/whoever airtime yourself. Retries still count. Free: 1 device, 300 SMS lifetime, 300 contacts. We do not sell credit packs. External: ITU E.164 for number format — not a substitute for consent.
Checklist
- consent_at / source / otp_only / tz in schema.
- Send worker joins STOP.
- .gitignore real dumps; fixtures are fake.
- No phones in GitHub issues or screenshots.
- OTP and promo lists (and SIMs) stay split.
- Hub E linked; core lists how-to not cloned.
Next steps
Hub: open source guide. Pricing: devices and SMS volume. Setup: device setup.
Related product pages
Jump to the live product docs for this topic—not another long-form article.
- SMS API documentationLive endpoint reference
- device and SMS volume pricingPlans and allowances
- contacts, lists, and segmentsAudience hygiene
- Android SMS gateway product guideDefinition, product, and how to buy




