Master Workflow Automation with Make
The complete guide to Make automation. Build production workflows that save 20+ hours per week.
- Time needed
- 1-2 hours
- Sections
- 12
- Tools
- 4
- Level
- Beginner
Before you start
- Make (Integromat) free account
- Access to apps you want to connect
Tools used
Master Workflow Automation with Make
Objective
This playbook enables you to build a production-grade, event-driven automation layer using Make (formerly Integromat) that executes repetitive operational work without continuous human coordination. When you finish, you will have a structured, monitored, and recoverable automation architecture that handles failover, retries, and auditability.
The operational reason for this implementation: manual back-office processes consume predictable engineering and operations time. This playbook removes that coordination burden by establishing a durable automation foundation that you can extend to new workflows without restarting the architecture.
Success criteria:
- A webhook receiver accepts external events and routes them through a validated scenario.
- Data transformations produce records that match the destination schema without manual correction.
- Errors are routed to a dedicated error-handling branch rather than failing silently.
- Scheduled scenarios run unattended with observable completion states.
- The complete workflow is documented, versioned, and recoverable.
Prerequisites
Access Requirements
An account with permission to create scenarios in the target Make environment (production and staging should be separate environments or organizations if available).
Read access to the source system's API or event stream.
Write access to the destination system's API or database where records will land.
Administrative access to create webhooks and manage scenario scheduling.
Sample Data
A sample dataset representing the records your workflows will process, including edge cases such as empty fields, duplicate identifiers, and malformed values.
The expected schema or field structure of the destination system.
Known identifiers (customer IDs, order numbers, or internal keys) used for deduplication and idempotency.
Technical Conditions
Network access from the Make platform to both the source and destination APIs.
API credentials or tokens for each integrated system, stored outside source code.
Confirmation of the authentication method supported by each target API (API key, OAuth, or basic auth) before configuring connections.
A production release window if you will be replacing an existing manual or legacy process.
Key Decisions
Where records originate — which system is the authoritative source of truth for the workflow.
Deduplication key — which field or combination of fields uniquely identifies a record.
Error handling ownership — who receives notifications when a scenario fails repeatedly.
Production scheduling window — when scenarios may write to production systems.
Environment separation — whether staging and production scenarios run in separate Make environments.
Decisions
Make the following decisions before beginning:
Tools and systems
Make Platform
The core orchestration layer. Make executes scenarios composed of modules that read from, transform, and write to connected applications. It provides webhooks, schedulers, error handling, and operational monitoring in one platform.
Source System
The system that emits events or provides records requiring processing. This may be a CRM, ERP, database, or form endpoint. The source must be able to make authenticated requests to your webhook or be pollable on a schedule.
Destination System
The system that receives processed records. It may be a database, data warehouse, accounting system, or internal tool requiring the transformed output.
Error Channel
A communication destination (email, chat channel, or ticketing system) that receives scenario failure alerts and operational summaries.
Step 1 — Design the scenario architecture
What this step does
You are defining the boundaries of each automated workflow before building any modules. This prevents the most common failure point in automation implementations: single monolithic scenarios that are difficult to debug, extend, or recover.
Actions
- Document the end-to-end process you are automating as a numbered handoff sequence. Identify every manual step, the person who performs it, and the system they touch.
- Divide the process into discrete scenarios. Use one scenario per logical boundary:
- Receiver scenario: accepts inbound events, validates them, and writes to a staging data store.
- Transformer scenario: reads staged records, applies field mappings and transformations, and writes the result.
- Deliverer scenario: pushes transformed records to the destination system.
- Define the trigger for each scenario: webhook, schedule, or manual run.
- Identify the deduplication key and note it in the scenario documentation.
- Document the expected input and output schema for each scenario boundary.
Important considerations
- Scenario boundaries should align with failure domains. If a transformation fails, the receiver should not need to rerun.
- Avoid scenarios that attempt to perform every operation a process requires. A scenario that touches five different systems is proportionally harder to recover when one integration fails.
- Note where pauses or human approvals are legally or operationally required. Automation does not remove accountability; it removes mechanical execution.
Done when: you have a written process map showing scenario boundaries, triggers, inputs, outputs, and the deduplication key for each scenario.
Step 2 — Configure connections to external systems
What this step does
You are establishing authenticated, least-privilege connections between Make and each external system. Connections are the security boundary of your automation architecture.
Actions
- Create a dedicated service account or API user for the automation in each external system, with the minimum permissions required for the workflow to function.
- In Make, navigate to Connections and create a new connection for each system involved.
- Select the authentication method supported by the target API. Make supports API keys, OAuth 2.0, and basic authentication among others — confirm which the target API actually supports before configuring.
- Store any client secrets or tokens only in the Make connection store or a dedicated secrets manager. Never place credentials in module configuration fields or scenarios that are shared or version-controlled.
- Name each connection clearly with its environment and purpose, for example
PROD - CRM Read Only. - Test each connection with a lightweight read operation before proceeding.
Important considerations
- Prefer read-only credentials for source systems where the workflow only reads data.
- Where a workflow must write, scope the credentials to the specific objects or tables involved.
- Separate connections between staging and production environments. A scenario that accidentally writes staging data to production is a real operational risk.
- If the target API does not support the authentication method or permissions you expect, resolve this before building modules — do not build around unknown security constraints.
Done when: each external system connection returns a successful test response and uses credentials scoped to the minimum operations the workflow requires.
Step 3 — Build the receiver scenario with validation
What this step does
You are creating the entry point for inbound events. This scenario accepts data, validates it against expected structure, and routes valid versus invalid records correctly. Validation at the boundary prevents malformed data from propagating into downstream stages.
Actions
- Create a new scenario and add a Webhook module as the trigger.
- Configure the webhook to accept the expected payload format from the source system.
- Add a Data store or Google Sheets (for simpler implementations) module to stage incoming records with fields for
received_at,status, anderror_message. - Add a Router module after the webhook to evaluate payload completeness. Use filter conditions to check:
- Required fields are present and non-empty.
- Identifiers match the expected pattern.
- Data types match expectations (dates are dates, numbers are numbers).
- Route records with valid structure to the staging data store.
- Route records with missing or malformed fields to an Error branch that records the raw payload and the reason for rejection.
- Add a notification module to the error branch that sends an alert to the error notification channel with the record ID and validation failure reason.
A simplified module configuration might look like:
Webhook (trigger)
├─ Router: validate payload
│ ├─ Filter: required fields present → Data store: write record (status: "staged")
│ └─ Filter: fields missing/malformed → Code/Text aggregator: record error
│ └─ Notification: send alert
Important considerations
- Do not silently coerce invalid data during validation. Surface it instead.
- Preserve the original payload alongside any transformed version. You will need the original for recovery and auditing.
- Real webhooks can receive duplicate events due to retries on the source side. Design the staging write to be idempotent using the deduplication key identified in Step 1.
Done when: a test payload with valid structure appears in the staging data store with status staged, and a deliberately malformed payload triggers an error notification without entering the staged data.
Step 4 — Build the transformation and delivery scenario
What this step does
You are converting staged records into the destination system's expected format and delivering them. This scenario performs field mapping, value transformation, and the final write operation.
Actions
- Create a second scenario triggered by a Schedule (interval-based polling) that reads records from the staging data store where
status = "staged". - In the schedule settings, set an interval appropriate for the business requirement. For most back-office workloads, every 5–15 minutes is sufficient; real-time delivery may require a webhook-triggered transformation instead of polling.
- Add a Data store module to search for staged records using the deduplication key.
- For each staged record, add transformation modules:
- Use Text aggregator or Tools modules to format values (dates, phone numbers, currency) according to the destination schema.
- Use Lookup table modules for status or category mappings between source and destination values.
- Add an Iterator module if the destination system splits one source record into multiple child records (for example, one order creates multiple line items).
- Add the destination system module configured with the transformed field values.
- After a successful write, add a Data store module to update the staged record's
statustodeliveredand record thedelivered_attimestamp. - Wrap the destination write in an error handler. On failure, update the staged record's
statustofailedand store theerror_messagereturned by the destination API.
Important considerations
- Source systems and destinations rarely share field names. Document the mapping table explicitly — it is the contract between systems.
- If an API response returns a paginated or batched result, verify which module returns the array requiring iteration.
- A failed delivery should not result in a permanent dead letter silently. The record must remain visible in the staging store with a
failedstatus and a meaningful error message for investigation. - The transformation scenario should be idempotent. If the scenario runs twice for the same record, the second run should find
status = "delivered"and skip the record.
Done when: a staged record is transformed, written to the destination system, and its staging status is updated to delivered with a timestamp — and a deliberately broken destination module causes the record to be marked failed with the error preserved in the staging store.
Step 5 — Establish monitoring and operational visibility
What this step does
You are creating the operational surface that tells you whether automation is working. Without monitoring, a silent scenario failure is indistinguishable from a healthy process.
Actions
- In scenario settings, enable Incomplete executions tracking so partial runs are recorded rather than discarded.
- Configure scenario-level error notifications. Make sends an alert when a scenario stops after exceeding its retry threshold. Set the recipient to the error notification channel agreed in the prerequisites.
- Create a simple dashboard or report that queries the staging data store by
statusfield, showing counts ofstaged,delivered, andfailedrecords over time. - Add a scheduled Watch scenario that checks for records in
failedstatus older than a defined threshold (for example, 2 hours) and escalates them to the error notification channel. - Record scenario run history in the scenario's History tab and note in your operations documentation which scenarios are expected to run on which schedule.
Important considerations
- Notification fatigue causes silent failures. Route scenario-level alerts to a channel the owning team actually monitors, and keep the failure count in the dashboard as the source of truth.
- Make scenario history shows each execution and its duration. Use this to detect scenarios that are degrading over time before they fail outright.
Done when: a deliberately forced scenario failure produces an alert on the error notification channel, and the dashboard shows the affected record in failed status with a timestamp older than the escalation threshold after escalation.
Validation
Execute the following end-to-end validation using the sample dataset from the prerequisites.
- Submit a known valid record to the receiver webhook. Confirm it reaches the staging store with
status = "staged". - Wait for the transformation schedule to fire, then confirm the record has the expected destination values and the staging status updated to
delivered. - Compare the destination record field-by-field against the documented mapping table. Confirm dates, identifiers, and numeric values match expectations.
- Submit a record with a missing required field. Confirm the error branch fires, a notification is sent, and no record appears in the staged data.
- Submit the same valid record twice. Confirm the second submission does not create a duplicate in either the staging store or the destination system.
- Break the destination connection temporarily (revoke credentials or point the module at an invalid endpoint). Submit a valid record and confirm it is marked
failedwith the error preserved — then restore the connection and confirm the record is retried or escalated per the monitoring configuration. - Check the scenario history for each scenario and confirm the run counts match the number of submitted records.
- Confirm there are no credentials or secrets visible in scenario module configurations or logs.
Functional behavior: every valid input produces exactly one delivered record. Data correctness: all mapped values match the destination schema. Failure behavior: invalid records fail visibly with preserved errors. Observability: scenario history and the status dashboard reflect every execution and failure. Repeatability: rerunning the workflow does not produce duplicates or corruptions.
Rollback & edge cases
Rollback
Rollback for a Make implementation is primarily about stopping writes to production and preserving data until the issue is resolved.
- Disable the transformation scenario schedule immediately to stop further writes to the destination system.
- Leave the receiver scenario active if inbound events must not be lost; staged records will accumulate safely without downstream delivery.
- Investigate the
failedrecords in the staging store. Theirerror_messagefield indicates the failure cause. - If the destination write is causing the problem, correct the destination module configuration, then re-enable the schedule. Records in
status = "staged"orstatus = "failed"must be reset tostagedif you want the transformation scenario to process them again. This is a deliberate, reversible action — review the record set before resetting to avoid reprocessing legitimate failures. - If the receiver scenario itself is producing malformed data, disable the webhook at the source system side as well, then correct the receiver modules before re-enabling.
Ensure you have a written record of the previous working configuration for each changed module so you can restore it if corrections make things worse.
Edge cases
Duplicate inbound events. Source systems commonly retry webhook deliveries. The staging store's deduplication key check prevents duplicate writes at the receiver boundary, and the transformation scenario's status check prevents reprocessing at the delivery boundary.
Expired credentials. When a destination API token expires, every delivery fails with an authentication error. The staging records will accumulate in failed status. The escalation watch scenario should surface this within the threshold window, and the error message should identify authentication as the cause.
Partial API responses. Some destination APIs accept a batch but fail on individual records within the batch. Design the destination write to process records individually, or if using a batch module, verify how the API reports per-record failures. Do not mark a batch delivered unless every record within it is confirmed written.
Rate limits. Destination APIs frequently impose request limits. If the transformation scenario polls aggressively, the staging store may hold more records than the API accepts per minute. Set the schedule interval to respect documented API limits, and consider adding a delay between records if the destination API enforces a per-second cap.
Unusually large payloads. Source systems occasionally emit records with more data than expected. Validate against maximum field lengths in the receiver router and route oversized payloads to the error branch rather than attempting transformation that will fail downstream.
Timezone differences. Date fields commonly cause silent data corruption. Agree on the timezone and date format the destination expects, and apply the transformation explicitly. Never rely on implicit timezone handling between systems.
Upstream outage. When the source system is unavailable, webhook deliveries may be missed entirely rather than delayed. Note this limitation in the operations documentation and consider whether a reconciliation scenario that polls the source for missed records is warranted for your process.
Next step
After successful validation, move to the first production flow: replace the manual process you mapped in Step 1 with the automated scenario, and run it in production alongside the manual process for one full cycle. Compare the automated output against the manual result to confirm parity before retiring the manual steps.
Document operational ownership — who is on call for scenario failures and who reviews the dashboard weekly — and then extend the same receiver-transformer-deliverer architecture to the next process on your automation backlog. When you encounter a process whose decisions depend on interpreting unstructured information, that is the point to assess an AI-based decision layer; for repeatable, rule-driven work, the architecture in this playbook is the smallest credible solution.
If your engineering team would benefit from a review of this implementation or you want to build out the next workflow on this foundation, that discussion is a natural next step.
Keep going
More playbooks
Want it running on your stack?
We implement this playbook for clients — tailored to your stack, your data, and your team's workflow, and handed over documented.