Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions plugins/SendGrid/v1/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
## Overview

A plugin for Twilio SendGrid, a popular SMTP server.

The plugin provides email send stats and unsubscribes, allowing software and marketing teams to report on email performance.

## Setup

Authentication is via API key.

Create an API key in https://app.sendgrid.com/settings/api_keys

Select 'Custom Access' and configure the following permissions:
- Stats (read-only)
- Suppressions (read-only)

## Known limitations

Account credits cannot be monitored using this plugin. Although an API endpoint is available, it seems to require an API key with full admin access.
66 changes: 66 additions & 0 deletions plugins/SendGrid/v1/dataStreams/allClientStats.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"name": "allClientStats",
"displayName": "All Client Stats",
"baseDataSourceName": "httpRequestUnscoped",
"config": {
"httpMethod": "get",
"paging": {
"mode": "none"
},
"expandInnerObjects": true,
"endpointPath": "/clients/stats",
"getArgs": [
{
"key": "start_date",
"value": "{{timeframe.start.substring(0,10)}}"
},
{
"key": "aggregated_by",
"value": "day"
},
{
"key": "limit",
"value": "100"
},
{
"key": "end_date",
"value": "{{timeframe.end.substring(0,10)}}"
}
],
"postRequestScript": "script1-post.js",
"headers": []
},
"metadata": [
{
"shape": [
"date",
{
"timeZone": "Etc/UTC"
}
],
"name": "date"
},
{
"shape": [
"number",
{
"decimalPlaces": 0
}
],
"name": "metrics.opens"
},
{
"shape": [
"number",
{
"decimalPlaces": 0
}
],
"name": "metrics.unique_opens"
},
{
"pattern": ".*"
}
],
"timeframes": true
Copy link
Member

Choose a reason for hiding this comment

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

Because you're only passing in the date part of the timeframe start/end, it might be worth restricting the timeframes here to exclude last 1 hour and last 12 hours? e.g.

Suggested change
"timeframes": true
"timeframes": [
"last24hours",
"last7days",
"last30days",
"thisMonth",
"thisQuarter",
"thisYear",
"lastMonth",
"lastQuarter"
]

}
44 changes: 44 additions & 0 deletions plugins/SendGrid/v1/dataStreams/blocks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{
"name": "blocks",
"displayName": "Blocks",
"baseDataSourceName": "httpRequestUnscoped",
"config": {
"httpMethod": "get",
"paging": {
"mode": "none"
},
"expandInnerObjects": true,
"endpointPath": "/suppression/blocks",
"getArgs": [
{
"key": "start_time",
"value": "{{timeframe.unixStart}}"
},
{
"key": "end_time",
"value": "{{timeframe.unixEnd}}"
},
{
"key": "limit",
"value": "500"
}
],
"pathToData": "",
"headers": []
},
"metadata": [
{
"shape": [
"date",
{
"timeZone": "Etc/UTC"
}
],
"name": "created"
},
{
"pattern": ".*"
}
],
"timeframes": true
}
44 changes: 44 additions & 0 deletions plugins/SendGrid/v1/dataStreams/bounces.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{
"name": "bounces",
"displayName": "Bounces",
"baseDataSourceName": "httpRequestUnscoped",
"config": {
"httpMethod": "get",
"paging": {
"mode": "none"
},
"expandInnerObjects": true,
"endpointPath": "/suppression/bounces",
"getArgs": [
{
"key": "start_time",
"value": "{{timeframe.unixStart}}"
},
{
"key": "end_time",
"value": "{{timeframe.unixEnd}}"
},
{
"key": "limit",
"value": "500"
}
],
"pathToData": "",
"headers": []
},
"metadata": [
{
"shape": [
"date",
{
"timeZone": "Etc/UTC"
}
],
"name": "created"
},
{
"pattern": ".*"
}
],
"timeframes": true
}
96 changes: 96 additions & 0 deletions plugins/SendGrid/v1/dataStreams/browserStats.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
{
"name": "browserStats",
"displayName": "Browser Stats",
"baseDataSourceName": "httpRequestUnscoped",
"config": {
"httpMethod": "get",
"paging": {
"mode": "none"
},
"expandInnerObjects": true,
"endpointPath": "/browsers/stats",
"getArgs": [
{
"key": "start_date",
"value": "{{timeframe.start.substring(0,10)}}"
},
{
"key": "end_date",
"value": "{{timeframe.end.substring(0,10)}}"
},
{
"key": "aggregated_by",
"value": "{{aggregated_by}}"
},
{
"key": "limit",
"value": "1000"
}
],
"postRequestScript": "script1-post.js",
"headers": []
},
"ui": [
{
"name": "aggregated_by",
"type": "autocomplete",
"label": "Aggregate by",
"validation": {
"required": true
},
"allowCustomValues": false,
"isMulti": false,
"defaultValue": "day",
"data": {
"source": "fixed",
"values": [
{
"value": "day",
"label": "Day"
},
{
"value": "week",
"label": "Week"
},
{
"value": "month",
"label": "Month"
}
]
}
}
],
"metadata": [
{
"shape": [
"date",
{
"timeZone": "Etc/UTC"
}
],
"name": "date"
},
{
"shape": [
"number",
{
"decimalPlaces": 0
}
],
"name": "metrics.clicks"
},
{
"shape": [
"number",
{
"decimalPlaces": 0
}
],
"name": "metrics.unique_clicks"
},
{
"pattern": ".*"
}
],
"timeframes": true
}
96 changes: 96 additions & 0 deletions plugins/SendGrid/v1/dataStreams/clientTypeStats.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
{
"name": "clientTypeStats",
"displayName": "Client Type Stats",
"baseDataSourceName": "httpRequestUnscoped",
"config": {
"httpMethod": "get",
"paging": {
"mode": "none"
},
"expandInnerObjects": true,
"endpointPath": "/clients/desktop/stats",
"getArgs": [
{
"key": "start_date",
"value": "{{timeframe.start.substring(0,10)}}"
},
{
"key": "end_date",
"value": "{{timeframe.end.substring(0,10)}}"
},
{
"key": "aggregated_by",
"value": "{{aggregated_by}}"
},
{
"key": "limit",
"value": "1000"
}
],
"postRequestScript": "script1-post.js",
"headers": []
},
"ui": [
{
"name": "aggregated_by",
"type": "autocomplete",
"label": "Aggregate by",
"validation": {
"required": true
},
"allowCustomValues": false,
"isMulti": false,
"defaultValue": "day",
"data": {
"source": "fixed",
"values": [
{
"value": "day",
"label": "Day"
},
{
"value": "week",
"label": "Week"
},
{
"value": "month",
"label": "Month"
}
]
}
}
],
"metadata": [
{
"shape": [
"date",
{
"timeZone": "Etc/UTC"
}
],
"name": "date"
},
{
"shape": [
"number",
{
"decimalPlaces": 0
}
],
"name": "metrics.opens"
},
{
"shape": [
"number",
{
"decimalPlaces": 0
}
],
"name": "metrics.unique_opens"
},
{
"pattern": ".*"
}
],
"timeframes": true
}
Loading