Skip to content

Add SpoofSentry integration#2963

Open
netallion wants to merge 6 commits into
DataDog:masterfrom
netallion:add-spoofsentry-integration
Open

Add SpoofSentry integration#2963
netallion wants to merge 6 commits into
DataDog:masterfrom
netallion:add-spoofsentry-integration

Conversation

@netallion
Copy link
Copy Markdown

What does this PR do?

Adds a new integration for SpoofSentry by DomainSeal — a DMARC monitoring, domain spoofing detection, and automated takedown platform.

SpoofSentry sends domain security events to Datadog via the Logs API (HTTP intake).

Includes:

  • Integration tile with manifest and classifier tags (Security, Log Collection, Notifications)
  • Pre-built dashboard (7 widgets: event counts, severity timeseries, threat toplist, domain breakdown, takedown activity, log stream)
  • Log pipeline with attribute remapping
  • Setup documentation (README rendered in Datadog UI)

Motivation

SpoofSentry protects domains from email spoofing, phishing impersonation, and lookalike domain abuse. Security teams using Datadog need these events alongside their other security data for centralized analysis, correlation, and alerting.

Review checklist

  • PR has a meaningful title
  • Feature or bugfix has tests
  • Git history is clean
  • If PR impacts documentation, docs team has been notified
  • If this PR includes a log pipeline, please add a description describing the remappers and processors.

Log Pipeline Description

The log pipeline (assets/logs/spoofsentry.yaml) includes these processors:

  • Attribute remapper: eventTypeevt.name (event classification)
  • Attribute remapper: severitystatus (log level mapping)
  • Attribute remapper: domainnetwork.destination.domain (target domain)
  • Attribute remapper: tenantIdusr.id (customer tenant)
  • Category processor: Maps severity values (critical, high, medium, low, info) to named categories

Additional Notes

  • Source: spoofsentry (ddsource tag)
  • Auth: DD-API-KEY header
  • Multi-site: datadoghq.com (US), datadoghq.eu (EU)
  • Event types: DMARC failures, spoofing campaigns, lookalike domains, DNS enforcement changes, takedown orchestration lifecycle
  • Author: DomainSeal (https://spoofsentry.com)
  • Support: hello@spoofsentry.com

…d takedown events

SpoofSentry by DomainSeal sends domain security events to Datadog via the Logs API.

Includes:
- Integration tile with manifest and classifier tags
- Pre-built dashboard (7 widgets: event counts, severity timeseries, threat toplist, domain breakdown, takedown activity, log stream)
- Log pipeline with attribute remapping (eventType, severity, domain, tenantId)
- Setup documentation

Event types: DMARC failures, spoofing campaigns, lookalike domains, DNS enforcement changes, takedown orchestration lifecycle.

Severity levels: critical, high, medium, low, info
Sourcetype: spoofsentry (ddsource tag)
Auth: DD-API-KEY header
Multi-site: datadoghq.com (US), datadoghq.eu (EU)
@netallion netallion requested review from a team as code owners April 9, 2026 10:25
@cswatt
Copy link
Copy Markdown
Contributor

cswatt commented Apr 9, 2026

Added DOCS-13959 to track docs review

@cswatt cswatt added the editorial review Waiting on a more in-depth review from a docs team editor label Apr 9, 2026
@dd-dominic
Copy link
Copy Markdown
Contributor

@netallion Your organization will need to onboard as a Technology Partner. Please reach out to ecosystems@datadoghq.com and reference this PR.

Comment thread spoofsentry/manifest.json
"tile": {
"overview": "README.md#Overview",
"configuration": "README.md#Setup",
"uninstallation": "README.md#Uninstallation",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The manifest references README.md#Uninstallation, but the README doesn't include an ## Uninstallation section. Please add one. For a log-based integration, this can be brief — for example:

## Uninstallation

Remove the SpoofSentry integration from **Integrations > Integrations**.

Comment thread spoofsentry/manifest.json Outdated
"uninstallation": "README.md#Uninstallation",
"support": "README.md#Support",
"changelog": "CHANGELOG.md",
"description": "Ingest DMARC monitoring, spoofing detection, and takedown events from SpoofSentry",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This description is 81 characters, which exceeds the 80-character limit for tile descriptions. Trim slightly — for example:

Suggested change
"description": "Ingest DMARC monitoring, spoofing detection, and takedown events from SpoofSentry",
"description": "DMARC monitoring, spoofing detection, and takedown events from SpoofSentry",

Comment thread spoofsentry/README.md Outdated

### Log Pipeline

A log pipeline is included that:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
A log pipeline is included that:
The integration includes a log pipeline that:

Comment thread spoofsentry/README.md Outdated

### Logs

SpoofSentry sends domain security events as JSON logs via the Datadog Logs API.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
SpoofSentry sends domain security events as JSON logs via the Datadog Logs API.
SpoofSentry sends domain security events as JSON logs through the Datadog Logs API.

Comment thread spoofsentry/README.md Outdated
Comment on lines +57 to +61
## Support

- Email: hello@spoofsentry.com
- Documentation: [https://spoofsentry.com/docs/integrations/datadog](https://spoofsentry.com/docs/integrations/datadog)
- Status: [https://spoofsentry.com/status](https://spoofsentry.com/status)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Support section for integrations-extras typically points directly to the creator's support contact. The Documentation: and Status: list items are non-standard here — consider simplifying to match the convention used by other integrations, and folding the docs link into the Setup section if it's useful there:

Suggested change
## Support
- Email: hello@spoofsentry.com
- Documentation: [https://spoofsentry.com/docs/integrations/datadog](https://spoofsentry.com/docs/integrations/datadog)
- Status: [https://spoofsentry.com/status](https://spoofsentry.com/status)
## Support
Need help? Contact [SpoofSentry support](mailto:hello@spoofsentry.com).

{
"id": 1,
"definition": {
"title": "Security Events (24h)",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The (24h) suffix implies a fixed time window, but this widget uses the dashboard's time selector. Consider removing it or renaming to reflect the dynamic range, for example "Security Events".

{
"id": 2,
"definition": {
"title": "Critical & High Threats (24h)",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above — the (24h) suffix is misleading since the time range is controlled by the dashboard selector. Consider "Critical & High Threats".

"indexes": ["*"],
"compute": { "aggregation": "count" },
"group_by": [
{ "facet": "host", "limit": 10, "sort": { "aggregation": "count", "order": "desc" } }
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "Events by Domain" widget groups by host, but the log pipeline maps domain to @network.destination.domain. Please verify that host is populated with the monitored domain — if not, this facet should likely be @network.destination.domain or @domain.

Copy link
Copy Markdown
Contributor

@domalessi domalessi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Editorial review — SpoofSentry integration

Thanks for the submission! The integration looks well structured overall. A few things to address before this can be approved:

Blocking

  • The manifest references README.md#Uninstallation but the README has no ## Uninstallation section. Add a brief one (see inline comment on manifest.json).

Must fix

  • Missing Validation subsection: Add a ### Validation step under ## Setup explaining how users can confirm the integration is working — for example, by navigating to Logs and filtering by source:spoofsentry.
  • Missing Data Collected subsections: The README is missing ### Metrics, ### Service Checks, and ### Events under ## Data Collected. Each should include a statement such as "The SpoofSentry integration does not include any metrics." See the standard README template for reference.

See inline comments for additional must-fix and suggestion items.

Comment thread spoofsentry/README.md Outdated
Comment on lines +16 to +21
1. Log in to [SpoofSentry](https://spoofsentry.com)
2. Go to **Settings > Integrations > SIEM**
3. Select **Datadog**
4. Enter your **Datadog API key** (from Datadog > Organization Settings > API Keys)
5. Select your **Datadog site** (US: `datadoghq.com`, EU: `datadoghq.eu`)
6. Click **Test Connection** to verify
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. Log in to [SpoofSentry](https://spoofsentry.com)
2. Go to **Settings > Integrations > SIEM**
3. Select **Datadog**
4. Enter your **Datadog API key** (from Datadog > Organization Settings > API Keys)
5. Select your **Datadog site** (US: `datadoghq.com`, EU: `datadoghq.eu`)
6. Click **Test Connection** to verify
1. Log in to [SpoofSentry](https://spoofsentry.com).
2. Go to **Settings > Integrations > SIEM**.
3. Select **Datadog**.
4. Enter your **Datadog API key** (from Datadog > Organization Settings > API Keys).
5. Select your **Datadog site** (US: `datadoghq.com`, EU: `datadoghq.eu`).
6. Click **Test Connection** to verify,

Comment thread spoofsentry/README.md Outdated

### In Datadog

Events appear automatically in **Logs** with `source:spoofsentry`. The pre-built dashboard is installed with this integration.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Events appear automatically in **Logs** with `source:spoofsentry`. The pre-built dashboard is installed with this integration.
Events appear automatically in **Logs** with `source:spoofsentry`. A prebuilt dashboard is installed with this integration.

Comment thread spoofsentry/README.md Outdated

### In SpoofSentry

1. Log in to [SpoofSentry](https://spoofsentry.com)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Integration READMEs conventionally use reference-style links (e.g., [SpoofSentry][1] with [1]: https://spoofsentry.com at the bottom of the file) rather than inline URLs. Consider converting all links in this README to that format for consistency with the standard template.

Comment thread spoofsentry/README.md Outdated

| Field | Description |
|-------|-------------|
| `eventType` | Event classification (e.g., `SPOOF_THREAT_DETECTED`) |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| `eventType` | Event classification (e.g., `SPOOF_THREAT_DETECTED`) |
| `eventType` | Event classification (for example, `SPOOF_THREAT_DETECTED`) |

Comment thread spoofsentry/README.md Outdated

### Tags

All events include these tags:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
All events include these tags:
All events include the following tags:

Copy link
Copy Markdown
Contributor

@domalessi domalessi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few inline suggestions but nothing blocking. Approved!

Comment thread spoofsentry/README.md

The integration includes a log pipeline that:
- Maps `eventType` to `evt.name`
- Maps `severity` to log status
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is "log status" an attribute name? Ideally, this bullet would be parallel with the first and third bullets which include an attribute name.

{
"id": 1,
"definition": {
"title": "Security Events",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"title": "Security Events",
"title": "Security events",

{
"id": 2,
"definition": {
"title": "Critical & High Threats",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"title": "Critical & High Threats",
"title": "Critical and high threats",

{
"id": 3,
"definition": {
"title": "Events by Severity",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"title": "Events by Severity",
"title": "Events by severity",

{
"id": 4,
"definition": {
"title": "Events by Type",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"title": "Events by Type",
"title": "Events by type",

{
"id": 5,
"definition": {
"title": "Events by Domain",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"title": "Events by Domain",
"title": "Events by domain",

{
"id": 6,
"definition": {
"title": "Takedown Activity",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"title": "Takedown Activity",
"title": "Takedown activity",

{
"id": 7,
"definition": {
"title": "Recent Security Events",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"title": "Recent Security Events",
"title": "Recent security events",

@@ -0,0 +1,160 @@
{
"title": "SpoofSentry - Domain Security Overview",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"title": "SpoofSentry - Domain Security Overview",
"title": "SpoofSentry: Domain Security Overview",

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

editorial review Waiting on a more in-depth review from a docs team editor product/HOLD

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants