ifta: recurring quarterly-return reminder campaign (calendar-triggered)
IFTA returns are due on fixed dates (Apr30/Jul31/Oct31/Jan31) and every interstate carrier (op code A, ~628k sendable) files 4x/year forever -- pure recurring revenue, no per-carrier deadline data needed. - build_ifta_quarterly_campaign.py: self-gates to the reminder window (~21d before each deadline), selects interstate carriers, mints the same-day coupon, builds+schedules the campaign reusing build_trucking_campaigns plumbing (DRY: one source of truth for sending/suppression/coupon). Per-quarter cycle reset (ifta_reminder_cycle marker) so each quarter re-reminds the full pool; marks ifta_reminded_at to avoid double-sends within a cycle. - ifta_quarterly_reminder.html: deadline + penalties + 'we do the math' + coupon + CAN-SPAM. Listmonk source campaign id 469. - migration 094: fmcsa_carriers.ifta_reminded_at column + partial index. Verified: deadline/window logic correct, imports reuse tc helpers, migration applied on prod.
This commit is contained in:
parent
766e32e555
commit
19bbef3231
3 changed files with 284 additions and 0 deletions
38
data/trucking_campaigns/ifta_quarterly_reminder.html
Normal file
38
data/trucking_campaigns/ifta_quarterly_reminder.html
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<div style="font-family:-apple-system,system-ui,sans-serif;max-width:600px;margin:0 auto">
|
||||
<div style="background:#1a2744;padding:24px;text-align:center;border-radius:12px 12px 0 0">
|
||||
<img src="https://performancewest.net/images/logo.png" alt="Performance West" style="height:40px">
|
||||
</div>
|
||||
<div style="background:#fff;border:1px solid #e2e8f0;padding:32px;border-radius:0 0 12px 12px">
|
||||
<p style="font-size:15px;color:#374151;line-height:1.6">{{ .Subscriber.Attribs.company }},<br>DOT# {{ .Subscriber.Attribs.dot_number }}</p>
|
||||
<h1 style="font-size:22px;color:#dc2626;margin:16px 0">Your IFTA quarterly return is due {{ .Subscriber.Attribs.ifta_due_date }}.</h1>
|
||||
<p style="font-size:15px;color:#374151;line-height:1.6">If you run interstate, your IFTA fuel-tax return for <strong>{{ .Subscriber.Attribs.ifta_quarter }}</strong> is coming due. Miss it and you face:</p>
|
||||
<ul style="font-size:15px;color:#374151;line-height:1.8">
|
||||
<li><strong>Late penalties</strong> ($50 or 10% of net tax due, whichever is greater)</li>
|
||||
<li><strong>Interest</strong> on unpaid tax in every member jurisdiction</li>
|
||||
<li>Risk of your <strong>IFTA license being suspended</strong> - which can put you out of service</li>
|
||||
</ul>
|
||||
{{ if .Subscriber.Attribs.coupon_code }}
|
||||
<div style="background:#fff7ed;border:2px solid #f97316;border-radius:10px;padding:20px;margin:20px 0;text-align:center">
|
||||
<p style="font-size:13px;font-weight:700;color:#9a3412;letter-spacing:.04em;margin:0 0 6px">TODAY ONLY - {{ .Subscriber.Attribs.coupon_pct }}% OFF</p>
|
||||
<p style="font-size:18px;font-weight:700;color:#9a3412;margin:0 0 4px">We file your IFTA quarterly return for <span style="text-decoration:line-through;color:#c2410c;font-weight:600">$109</span> <span style="color:#15803d">$65</span>.</p>
|
||||
<p style="font-size:14px;color:#9a3412;margin:0 0 4px">Use code <strong style="font-size:16px;letter-spacing:.08em">{{ .Subscriber.Attribs.coupon_code }}</strong> at checkout.</p>
|
||||
<p style="font-size:12px;color:#b91c1c;font-weight:700;margin:0">Expires {{ .Subscriber.Attribs.coupon_expires }}.</p>
|
||||
</div>
|
||||
{{ else }}
|
||||
<div style="background:#f0fdf4;border:2px solid #86efac;border-radius:10px;padding:20px;margin:20px 0;text-align:center">
|
||||
<p style="font-size:18px;font-weight:700;color:#166534;margin:0 0 4px">We file your IFTA quarterly return for $109.</p>
|
||||
<p style="font-size:14px;color:#15803d;margin:0">Send us your miles and fuel by state - we calculate and file. No portals, no math.</p>
|
||||
</div>
|
||||
{{ end }}
|
||||
<div style="background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:16px;margin:20px 0">
|
||||
<p style="font-size:14px;color:#374151;margin:0 0 6px"><strong>We do the math for you.</strong></p>
|
||||
<p style="font-size:13px;color:#64748b;margin:0;line-height:1.6">Send us your total miles and gallons by jurisdiction for the quarter. We calculate the tax owed for every state you ran in, prepare the return, and file it. You just review and we handle the rest - so you can get back to driving.</p>
|
||||
</div>
|
||||
<div style="text-align:center;margin:24px 0">
|
||||
<a href="{{ .Subscriber.Attribs.lp_link }}&utm_source=listmonk&utm_medium=email&utm_campaign=ifta-quarterly@TrackLink" style="display:inline-block;padding:14px 36px;background:#f97316;color:#fff;font-weight:700;border-radius:8px;text-decoration:none;font-size:16px">10-4 - File My IFTA Return →</a>
|
||||
</div>
|
||||
<p style="font-size:14px;color:#64748b;line-height:1.6">Or call us directly at <a href="tel:8884110383" style="color:#f97316;font-weight:600">(888) 411-0383</a>.</p>
|
||||
<p style="font-size:14px;color:#64748b">Performance West Inc.<br>DOT Compliance Services</p>
|
||||
</div>
|
||||
<div style="text-align:center;padding:16px;font-size:11px;color:#94a3b8"><a href="https://performancewest.net" style="color:#94a3b8">performancewest.net</a> · (888) 411-0383</div><div style="text-align:center;padding:0 16px 18px;font-size:11px;color:#94a3b8;line-height:1.7">Gotta hit a 10-100 and pull off this channel? <a href="{{ UnsubscribeURL }}" style="color:#94a3b8;text-decoration:underline">Unsubscribe here</a>.<br>Performance West Inc. · 525 Randall Ave Ste 100-1195, Cheyenne, WY 82001</div>
|
||||
</div>
|
||||
Loading…
Add table
Add a link
Reference in a new issue