Talk to us about your marketing automation project.
Tell us your channel mix, contact volume, and what your current tool can't do. We'll scope a platform and give you a fixed cost.
Marketing running campaigns from three disconnected tools -- email in one platform, SMS in another, lead scoring in a spreadsheet -- with no unified customer view?
Leads assigned to sales the moment they fill a form, with no nurture sequence or qualification, so sales wastes time on unready prospects?
One platform that orchestrates email, SMS, and push campaigns from a single contact record -- with lead scoring, journey logic, and CRM sync built in so marketing and sales work from the same data.
We build custom marketing automation platforms for MarTech companies and in-house teams that need more control than off-the-shelf tools allow -- without the per-contact pricing that makes scale expensive.
Multi-channel campaign orchestration -- email, SMS, push, in-app
Lead scoring and qualification workflows
Journey builder with conditional logic and triggers
CRM and CDP integration for unified contact data
A custom marketing automation platform gives marketing teams a single tool for multi-channel campaign orchestration, lead scoring, and CRM integration -- without paying per-contact fees or working around the limits of off-the-shelf platforms. RaftLabs builds marketing automation platforms for MarTech companies building products and for in-house teams that have outgrown HubSpot or Marketo. Most marketing automation platform builds deliver in 12 to 16 weeks at a fixed cost.
HubSpot and Marketo work well until they don't. Per-contact pricing makes scale expensive. Workflow logic hits limits when your journey requires branching that the platform doesn't support. White-labelling for a MarTech product is not possible without building on top of someone else's API terms. Data ownership becomes a concern when all contact activity lives in a third-party system.
A custom marketing automation platform is scoped to your contact data model, your channel mix, and your lead qualification logic. The journey canvas works the way your team thinks about campaigns, not the way the platform vendor decided to model it. Pricing scales with your infrastructure costs, not your contact count.
We build platforms for two audiences: MarTech companies building automation as a product feature, and in-house marketing teams at established businesses that have genuine reasons to move off commercial platforms.
Visual drag-and-drop journey canvas where marketers build multi-step sequences without engineering support. Multi-channel orchestration covers email sends via SMTP or AWS SES, SMS sends via Twilio, push notifications via APNs (iOS) and FCM (Android), and in-app messages delivered through your product's notification layer -- all managed from the same journey canvas rather than across separate tools with no shared state.
Event-based triggers ingest from form submissions, page visits, purchase events, CRM status updates, and event stream sources (Segment or RudderStack event track calls). Conditional branching on contact attributes, RFM segment membership, cohort assignment, or lead score tier lets journeys follow different paths for different audience groups without requiring a separate journey per segment. A/B and multivariate test nodes support configurable split ratios with Bayesian inference for winner selection -- the platform calculates the posterior probability that each variant is the best performer rather than waiting for a fixed sample size, which means winner promotion happens faster. Delay and time-based send windows, wait-for-condition steps, and frequency capping prevent over-messaging contacts who are in multiple active journeys simultaneously.
Drag-and-drop template builder with reusable content blocks and brand-locked design constraints, sending via SMTP relay or AWS SES for cost-effective high-volume delivery. Dynamic content personalisation inserts contact attributes, behavioural history (last product viewed, last purchase category, days since last open), and cohort-specific content blocks -- different body copy for high-value customers versus first-time buyers in the same send, without requiring two separate campaigns. Dynamic subject line and preview text personalisation improves open rates beyond generic batch-and-blast campaigns.
GDPR/CAN-SPAM/CASL compliance is built into the send infrastructure: unsubscribe processing within the legally required timeframes (CAN-SPAM requires within 10 business days; CASL is more stringent), suppression list management that prevents re-mailing unsubscribes and hard bounces, and consent record storage with timestamp and channel for audit purposes. Deliverability management includes dedicated sending domain setup, SPF and DKIM authentication, DMARC policy configuration, sending domain warmup schedules for new IP addresses, and real-time monitoring of bounce rates and spam complaint rates against ISP feedback loops (Google Postmaster Tools, Microsoft SNDS). Campaign performance analytics cover opens, clicks, conversions, and revenue attribution linked to purchase events.
Configurable lead scoring combining behavioural signals -- page visits weighted by URL intent tier, email opens and clicks, content downloads, demo requests, pricing page views -- with demographic and firmographic fit attributes from your CRM or enrichment data (Clearbit, Apollo, ZoomInfo). Two scoring approaches are supported: a rules-based additive model where each signal is assigned a point value by the marketing team, and a logistic regression model trained on historical conversion data that assigns weights based on which signals actually predicted closed-won deals in your data rather than what a marketer assumes should matter.
RFM (Recency, Frequency, Monetary) scoring segments your contact database into tiers based on last engagement date, engagement frequency, and revenue contribution -- useful for retention and re-engagement campaign targeting beyond the initial lead qualification use case. Score thresholds trigger sales handoff notifications (Slack message, CRM task creation, or email alert) and CRM status updates automatically when a contact crosses the qualification threshold. Score decay reduces a contact's score at a configurable rate when they stop engaging, so the score remains a live signal rather than a historical high-water mark. Disqualification rules remove contacts from scoring (and optionally suppress them from all outbound) when they match known non-buyer patterns -- competitor domain, free email domain lists, or specific demographic exclusions defined by your sales team.
SMS send via Twilio or AWS SNS with opt-in keyword capture, opt-out (STOP) processing, and carrier compliance (TCPA for US, CTIA messaging principles, carrier short-code and toll-free number requirements). Double opt-in flows for SMS are supported where required by regulation or carrier policy. Delivery status webhooks from Twilio track delivered, undelivered, and failed statuses per message so the platform can suppress non-deliverable numbers, retry on transient failures, and report accurate delivery rates rather than sent counts.
Push notification delivery to iOS via APNs and Android via FCM (Firebase Cloud Messaging) with token management to handle expired device tokens without manual cleanup. Web push via the Web Push Protocol covers desktop and Android Chrome subscribers. Delivery status tracking and retry logic handle APNs and FCM feedback service responses for expired or invalid tokens. GDPR-compliant consent management stores push permission grant timestamp, browser/device, and IP for audit purposes. Channel preference management ensures contacts only receive communications on channels they have explicitly opted into -- a contact who has opted out of SMS but not email doesn't receive SMS sends from any journey, enforced at the send layer rather than relying on journey logic checks. All three channels -- email, SMS, push -- are managed from the same journey canvas.
Open, click, and conversion tracking across email (via pixel tracking and click-through URL wrapping), SMS (via short link click tracking), and push channels (via notification action tracking). Conversion funnel analytics with drop-off rate at each journey step identifies exactly where contacts exit a nurture sequence so the specific underperforming step can be addressed rather than guessing. Cohort analysis groups contacts by journey entry date or segment membership to compare engagement and conversion rates across cohorts entering the same journey at different times.
Marketing attribution modelling supports five models applied to revenue events from your ecommerce platform or CRM: first-touch (100% credit to first interaction), last-touch (100% credit to final pre-conversion interaction), linear (equal credit across all interactions), time-decay (more credit to interactions closer to conversion), and data-driven attribution using Shapley values from cooperative game theory to allocate credit proportional to each channel's marginal contribution to conversions. Shapley value attribution is computed from historical multi-touch path data and is the most accurate model for understanding channel contribution, but it requires sufficient conversion volume to produce stable estimates. CDP (Customer Data Platform) architecture with event stream ingestion from Segment or RudderStack feeds the attribution model with a complete interaction record across channels, including web, mobile, email, and paid media touchpoints from the same unified timeline. Attribution data exports to your data warehouse (Snowflake, BigQuery, Redshift) for cross-channel reporting alongside paid media spend.
Bidirectional contact and activity sync with Salesforce (via the Salesforce REST API and Bulk API 2.0 for large record sets), HubSpot (via HubSpot CRM API v3), or your custom CRM via a configurable webhook or REST endpoint. Contact records in the marketing platform update when CRM lifecycle stage, deal stage, or custom fields change; CRM records update when contact behaviour in the marketing platform crosses configured thresholds (lead score change, journey completion, form submission). Activity data -- email opens, link clicks, journey entry and exit, SMS delivery status -- writes back to the CRM contact activity timeline so sales has the engagement history without switching tools.
CDP architecture with event stream ingestion from Segment or RudderStack ingests product events (feature usage, session data, in-app actions) alongside CRM and email engagement data into a unified contact profile. This enables the marketing platform to trigger journeys based on product behaviour signals -- a contact who hasn't used a key feature in 14 days triggers a re-engagement journey, not because a salesperson noticed it but because the event stream fired the trigger. GDPR and CASL compliance is built into the contact data layer: consent records store the channel, timestamp, consent basis, and version of consent language for each contact, with suppression list management that prevents messaging contacts who have withdrawn consent. Webhook support handles custom integrations with other systems in your stack -- billing platforms, customer support tools, product databases -- with data mapping configured to your field structure.
Frequently asked questions
Custom makes sense in three specific situations. First, if you are building marketing automation as a product feature inside a MarTech platform -- white-labelling HubSpot adds licensing costs per customer, creates dependency on HubSpot's API terms and rate limits, and prevents you from differentiating on the automation layer. A custom-built journey engine with your own multi-channel orchestration (email via SES, SMS via Twilio, push via APNs/FCM) and Bayesian A/B testing infrastructure is the only way to own the full product stack.
Second, if your contact volume makes per-contact pricing on commercial platforms more expensive than building and hosting your own infrastructure. At 500,000+ active contacts, HubSpot Marketing Hub Enterprise costs exceed $50,000 per year; AWS SES at the same volume costs a fraction of that for the email send layer alone. The crossover point depends on your feature usage breadth -- if you need the full HubSpot feature set, the comparison is more complex than just email costs.
Third, if your journey logic or data model is complex enough that the commercial platform's workflow builder requires significant workarounds. Platforms like HubSpot and Marketo handle standard nurture sequences well but struggle with highly conditional branching based on real-time product events, Shapley value attribution modelling, or multi-entity data models. For most businesses under 100,000 contacts with standard campaign types, HubSpot or Marketo remains the right answer.
Journey orchestration is the logic layer that determines what communication a contact receives, on which channel, and when -- based on their behaviour and attributes rather than a fixed broadcast schedule. A journey starts when a contact meets an entry condition: filling a form, reaching a lead score threshold, a Segment or RudderStack track event firing (e.g. plan_upgrade_started), a CRM lifecycle stage change, or a purchase event from your ecommerce platform.
At each step, the journey engine evaluates conditions against the contact's current data, waits for specific events to fire before proceeding, sends communications on the configured channel (email via SES, SMS via Twilio, push via APNs or FCM), or writes back to the CRM. Conditional branches split the journey based on contact attributes, RFM segment membership, cohort assignment, or lead score tier -- so an enterprise contact and a SMB contact enter the same journey but follow different branches with different content and different sales routing. Time delays hold contacts at a step until a configured interval passes; send-window constraints delay a send until the contact's local timezone is within the defined send window (typically business hours). The result is campaigns that respond to what contacts actually do rather than firing based on when they were added to a list.
Deliverability management is built into the platform at the infrastructure layer and the operational layer -- it's not an afterthought configured after launch.
At the infrastructure layer: dedicated sending IPs provisioned in AWS SES or your SMTP provider, domain authentication with SPF (TXT record), DKIM (2048-bit key, aligned with sending domain), and DMARC policy (starting at p=none with monitoring, graduating to p=quarantine as reputation is established). Sending domain warmup follows a scheduled ramp-up plan for new IP addresses -- starting at low daily volume and increasing over 4-6 weeks -- to establish sender reputation with major ISPs before high-volume sends begin. Real-time monitoring against ISP feedback loops: Google Postmaster Tools for Gmail domain reputation and spam rate reporting, Microsoft SNDS for Outlook/Hotmail, and native bounce/complaint rate dashboards.
At the operational layer: unsubscribe processing within CAN-SPAM's 10-business-day requirement and CASL's immediate-effect requirement, with suppression list management that prevents any journey or campaign from sending to suppressed addresses regardless of which list the contact is on. List hygiene workflows remove invalid addresses (hard bounces) from active sending and flag role-based addresses (info@, sales@) for exclusion. GDPR consent records store opt-in timestamp and consent source for every contact so any regulatory inquiry has an auditable response.
A core platform covering the visual journey builder, email send via AWS SES with deliverability management, rules-based lead scoring with CRM integration (Salesforce or HubSpot), and basic campaign analytics typically delivers in 12 to 14 weeks from requirements sign-off.
Adding SMS via Twilio with TCPA/CASL compliance, push notifications via APNs and FCM, Bayesian A/B testing, Shapley value attribution modelling, CDP event stream ingestion from Segment or RudderStack, and a multi-tenant architecture for a MarTech product (where each of your customers gets an isolated tenant with their own contact data, sending domains, and journey configuration) typically extends the timeline to 16 to 20 weeks. The multi-tenant architecture requirement is the largest single timeline driver because it affects data isolation, billing metering, admin provisioning, and onboarding flows throughout the application. We scope the build before pricing it so the timeline estimate is tied to a specific feature set. Fixed-cost delivery means the scope and timeline are agreed upfront and do not expand as the project progresses.
What clients say
Three-year average engagement. Founders and operators describing the work in their own words. No marketing varnish.

RaftLabs was outstanding at addressing our complex platform needs, delivering a stable, high-performance loyalty application that has been genuinely loved by the customers.
01 / 02
Tell us your channel mix, contact volume, and what your current tool can't do. We'll scope a platform and give you a fixed cost.