All guides
Workify
Make
Automationintermediate

How to Automate Invoicing with Make (Integromat) and Workify

Use Make's visual workflow builder to create multi-step invoice automations with Workify's REST API. More powerful than Zapier with a generous free tier.

What You'll Build

A Make scenario that watches for an event in your tool of choice and creates a Workify invoice via the API — with data transformation, conditional logic, and error handling that goes beyond what simpler automation tools offer.

Why Make Over Zapier?

Make (formerly Integromat) has a more generous free tier (1,000 operations/month), supports more complex branching logic, handles arrays and nested JSON natively, and gives you fine-grained control over HTTP requests. For invoice automation with variable line items or conditional routing, Make is often the better choice.

What You'll Need

  • A Workify Pro account with an API key (Settings → API Keys)
  • A Make account (free tier works)
  • Your Workify org_id from Settings

Step 1: Create a New Scenario

In Make, click Create a new scenario. You'll see the empty canvas with a trigger node waiting to be configured.

Step 2: Choose Your Trigger

Click the trigger node and select your source app. Popular options:

  • Google Sheets — watch for new rows
  • Airtable — watch for new records
  • Typeform / Jotform — watch for new responses
  • Pipedrive — watch for deal stage changes
  • HubSpot — watch for deal updates
  • Webhooks — receive data from any app via a custom URL

For testing, the Webhooks → Custom webhook trigger is the fastest way to get started without configuring a third-party app.

Step 3: Add an HTTP Module to Call the Workify API

  1. Click + to add a module after your trigger
  2. Search for HTTP and select Make a request
  3. Configure:
    • URL: https://getworkify.app/api/v1/invoices
    • Method: POST
    • Headers: Authorization: Bearer wfy_your_api_key
    • Body type: Raw
    • Content type: application/json

Step 4: Build the Request Body

In the Body field, use Make's mapping syntax to pull values from your trigger:

{
  "org_id": "your-org-id",
  "client_id": "{{1.client_id}}",
  "currency": "{{1.currency}}",
  "line_items": [
    {
      "description": "{{1.project_name}}",
      "quantity": 1,
      "unit_price": {{1.amount}}
    }
  ],
  "due_date": "{{formatDate(addDays(now; 30); 'YYYY-MM-DD')}}"
}

Make's built-in functions handle the heavy lifting:

  • formatDate() + addDays() computes a due date 30 days from today
  • Fields prefixed with {{1. reference data from module 1 (your trigger)

Step 5: Handle Multiple Line Items

If your trigger provides multiple line items (e.g. an array of services from Airtable), use Make's Array aggregator module before the HTTP request:

  1. Add an Iterator module to loop over the line items array
  2. Add an Array aggregator to collect each item into a JSON array
  3. Map the aggregated array into line_items in your HTTP request

This is where Make's power over Zapier really shows — handling dynamic arrays without workarounds.

Step 6: Look Up a Client by Email

If your trigger provides a client email rather than a Workify client_id, add an HTTP module before the invoice creation step:

  • URL: https://getworkify.app/api/v1/clients?email={{1.email}}
  • Method: GET
  • Headers: Authorization: Bearer wfy_your_api_key

Then map {{2.data[0].id}} (the first result's ID) into the client_id field of your invoice request.

Step 7: Add Error Handling

Make lets you attach error handlers to any module:

  1. Right-click the HTTP module → Add error handler
  2. Choose Resume with a fallback value, or Rollback to stop the scenario
  3. Add a Send an email or Slack message module to alert you on failures

Common Make Scenario Patterns

TriggerScenario
Airtable new recordCreate invoice with multiple line items from array
Google Forms responseCreate client + invoice in sequence
Pipedrive deal → "Won"Create invoice from deal value
Typeform submittedCreate draft invoice for manual review
Monthly scheduleCreate recurring invoice for all active retainers

Tips

  • Set your scenario to run on a schedule (e.g. every hour) for batch processing
  • Use Make's Data store to cache client IDs and avoid repeated API lookups
  • Enable Incomplete executions in scenario settings so failed runs are saved and can be retried
  • Use the Set variable module to define your org_id and API key once and reuse throughout the scenario

Ready to automate your invoicing?

Get your Workify API key and start building in minutes. Pro plan includes full API and webhook access.