Skip to main content

Automate SEC Alerts with Make (Integromat)

Make (formerly Integromat) is a visual automation platform that connects hundreds of apps. In this tutorial you will create a Make scenario that listens for OMNI Datastream enforcement-action events and sends a daily digest email to your compliance team.

Prerequisites

  • An Omni Datastream API key (set as OMNI_DATASTREAM_API_KEY)
  • A Make account (free tier works for testing)
  • An email address or distribution list for compliance alerts
  • (Optional) Familiarity with the Search Enforcement Actions tutorial

Architecture overview

OMNI Datastream enforcement monitor
        |
        v
Webhook POST --> Make Custom Webhook module
        |
        v
Make Router
   |             |
   v             v
Immediate      Data Store (aggregate)
email alert         |
                    v
              Scheduled scenario:
              daily digest email

Step 1 --- Create a custom webhook in Make

  1. Log in to Make and create a new scenario.
  2. Click the + button and search for Webhooks.
  3. Select Custom webhook as the trigger module.
  4. Click Add to create a new webhook. Name it OMNI Enforcement Events.
  5. Make generates a URL like:
https://hook.make.com/abc123def456...
  1. Copy this URL --- you will register it with OMNI Datastream next.
  2. Click OK, then click Run once to put Make in listening mode.

Step 2 --- Register the webhook with OMNI Datastream

Create a webhook endpoint

curl -X POST \
  -H "x-api-key: $OMNI_DATASTREAM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://hook.make.com/abc123def456...",
    "description": "Make enforcement alerts",
    "events": ["filing.new"]
  }' \
  "https://api.secapi.ai/v1/webhook_endpoints"

Create an enforcement filing monitor

Monitor for enforcement-related filings (administrative proceedings, litigation releases):
curl -X POST \
  -H "x-api-key: $OMNI_DATASTREAM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Enforcement Action Monitor",
    "form_types": ["ADMIN", "LITIGATION"],
    "webhook_endpoint_id": "we_abc123"
  }' \
  "https://api.secapi.ai/v1/monitors"
Replace we_abc123 with the endpoint ID returned in the previous step.

Send a test event

To establish the data structure in Make, send a test POST to make the webhook learn the schema:
curl -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "event": "filing.new",
    "timestamp": "2024-12-15T14:30:00Z",
    "data": {
      "accession_number": "34-99999",
      "form": "ADMIN",
      "company_name": "Test Respondent LLC",
      "filed_at": "2024-12-15",
      "description": "In the Matter of Test Respondent LLC for violations of Section 17(a)"
    }
  }' \
  "https://hook.make.com/abc123def456..."
Make should show Successfully determined with the data structure.

Step 3 --- Add a Set Variable module to format the alert

Add a Tools > Set variable module after the webhook trigger. Configure these variables:
Variable nameValue
alert_subjectSEC Enforcement: {{1.data.company_name}}
alert_bodySee template below
Alert body template:
SEC Enforcement Action Detected

Respondent: {{1.data.company_name}}
Form Type: {{1.data.form}}
Filed: {{1.data.filed_at}}
Accession: {{1.data.accession_number}}

Description:
{{1.data.description}}

---
This alert was generated by OMNI Datastream via Make.
Review in EDGAR: https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&company={{1.data.company_name}}&type=&dateb=&owner=include&count=10&search_text=&action=getcompany

Step 4 --- Send an immediate email alert

Add an Email > Send an Email module (or use Gmail, Outlook, or SendGrid).
FieldValue
Tocompliance-team@yourcompany.com
Subject{{2.alert_subject}}
Content{{2.alert_body}}

Step 5 --- Build the daily digest (optional)

For a daily summary instead of (or in addition to) individual alerts:

5a. Add a Data Store

  1. Go to Data Stores in Make and create a new store named enforcement_events.
  2. Add these fields: accession_number (text, key), company_name (text), form (text), filed_at (text), description (text).

5b. Store each event

Add a Data Store > Add/Replace a Record module in parallel with the email module (use a Router):
FieldValue
Data Storeenforcement_events
accession_number{{1.data.accession_number}}
company_name{{1.data.company_name}}
form{{1.data.form}}
filed_at{{1.data.filed_at}}
description{{1.data.description}}

5c. Create a scheduled digest scenario

Create a second scenario that runs on a schedule (e.g., daily at 8:00 AM):
  1. Trigger: Schedule (every day at 08:00).
  2. Data Store > Search Records: Fetch all records from enforcement_events.
  3. Array Aggregator: Combine all records into a single bundle.
  4. Text Aggregator: Format as a digest.
  5. Email > Send an Email: Send the compiled digest.
  6. Data Store > Delete all records: Clear the store for the next day.

Module configuration summary

Scenario 1: Real-time alerts
  [Custom Webhook] --> [Set Variable] --> [Router]
                                            |          |
                                            v          v
                                       [Send Email]  [Data Store: Add Record]

Scenario 2: Daily digest (scheduled)
  [Schedule 08:00] --> [Data Store: Search] --> [Aggregator] --> [Send Digest Email] --> [Data Store: Clear]

Expected result

When an enforcement action is filed, your compliance team receives an email like:
Subject: SEC Enforcement: Acme Trading Corp

SEC Enforcement Action Detected

Respondent: Acme Trading Corp
Form Type: ADMIN
Filed: 2024-12-15
Accession: 34-12345

Description:
In the Matter of Acme Trading Corp for violations of
Section 10(b) of the Securities Exchange Act of 1934.

---
This alert was generated by OMNI Datastream via Make.

Troubleshooting

ProblemSolution
Make webhook shows no dataClick Run once before sending a test event. The scenario must be listening.
Data structure not detectedSend the test curl payload from Step 2 while the scenario is in listening mode.
Emails not arrivingCheck the Email module configuration. Make sure your email service credentials are valid and the recipient is correct.
Duplicate enforcement eventsUse the Data Store with accession_number as the key field --- duplicates are automatically overwritten.
Monitor not triggeringVerify the monitor is active with GET /v1/monitors and that form_types includes the expected values.

Next steps

  • Add Slack in parallel: Use a Router to send both email and Slack alerts for high-priority enforcement actions.
  • Enrich with entity data: Add an HTTP module to call GET /v1/companies?name={company_name} to resolve the company and include ticker/CIK in the alert.
  • Filter by keyword: Add a Filter module between the webhook and the email to only alert on specific violation types (e.g., insider trading, accounting fraud).
See the Search Enforcement Actions tutorial for more on querying enforcement data.