Webhook Subscriptions

AdminUpdated Sep 24, 2026
GEThttps://shippified.net/api/webhook-subscriptions
List your outbound webhook subscriptions.
Parameters
NameInTypeRequiredDescription
limitqueryintegerno
offsetqueryintegerno
Responses
200 OK
{}
Code samples
cURL
curl -X GET "https://shippified.net/api/webhook-subscriptions?limit=&offset="
TypeScript
const res = await fetch('https://shippified.net/api/webhook-subscriptions?limit=&offset=', {
  method: 'GET',
});
const data = await res.json();
Python
import requests

res = requests.request(
    "GET",
    "https://shippified.net/api/webhook-subscriptions?limit=&offset=",
)
data = res.json()
Go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://shippified.net/api/webhook-subscriptions?limit=&offset=", nil)
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://shippified.net/api/webhook-subscriptions?limit=&offset=');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Ruby
require 'net/http'
require 'uri'

uri = URI('https://shippified.net/api/webhook-subscriptions?limit=&offset=')
req = Net::HTTP::Get.new(uri)
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(req)
end
puts res.body
Java
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://shippified.net/api/webhook-subscriptions?limit=&offset="))
    .GET()
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
POSThttps://shippified.net/api/webhook-subscriptions
Create a subscription. Returns the raw signing secret exactly once.
Request body application/json
{
  "url": "string",
  "eventTypes": [
    "order.created"
  ],
  "active": true
}
Responses
201 Created. The `secret` field is only present in this response.
{}
400 Invalid url or eventTypes.
429 Subscription limit reached (25 per workspace).
Code samples
cURL
curl -X POST "https://shippified.net/api/webhook-subscriptions" \
  -H "Content-Type: application/json" \
  -d '{"url":"string","eventTypes":["order.created"],"active":true}'
TypeScript
const res = await fetch('https://shippified.net/api/webhook-subscriptions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"url":"string","eventTypes":["order.created"],"active":true}),
});
const data = await res.json();
Python
import requests

res = requests.request(
    "POST",
    "https://shippified.net/api/webhook-subscriptions",
    headers={
    "Content-Type": "application/json",
    },
    json={"url": "string", "eventTypes": ["order.created"], "active": True},
)
data = res.json()
Go
package main

import (
	"fmt"
	"io"
	"net/http"
	"strings"
)

func main() {
	req, _ := http.NewRequest("POST", "https://shippified.net/api/webhook-subscriptions", strings.NewReader(`{"url":"string","eventTypes":["order.created"],"active":true}`))
	req.Header.Set("Content-Type", "application/json")
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://shippified.net/api/webhook-subscriptions');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"url":"string","eventTypes":["order.created"],"active":true}');
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Ruby
require 'net/http'
require 'uri'

uri = URI('https://shippified.net/api/webhook-subscriptions')
req = Net::HTTP::Post.new(uri)
req['Content-Type'] = 'application/json'
req.body = '{"url":"string","eventTypes":["order.created"],"active":true}'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(req)
end
puts res.body
Java
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://shippified.net/api/webhook-subscriptions"))
    .header("Content-Type", "application/json")
    .method("POST", BodyPublishers.ofString("{\"url\":\"string\",\"eventTypes\":[\"order.created\"],\"active\":true}"))
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
GEThttps://shippified.net/api/webhook-subscriptions/{id}
Get one subscription.
Parameters
NameInTypeRequiredDescription
idpathstringyes
Responses
200 OK
{
  "id": "string",
  "userId": "string",
  "url": "string",
  "prefix": "string",
  "eventTypes": [
    "order.created"
  ],
  "active": true,
  "failureCount": 0,
  "needsSecretRotation": true,
  "lastFiredAt": "2024-01-01T00:00:00Z",
  "lastError": "string",
  "createdAt": "2024-01-01T00:00:00Z"
}
404 Not found.
Code samples
cURL
curl -X GET "https://shippified.net/api/webhook-subscriptions/{id}"
TypeScript
const res = await fetch('https://shippified.net/api/webhook-subscriptions/{id}', {
  method: 'GET',
});
const data = await res.json();
Python
import requests

res = requests.request(
    "GET",
    "https://shippified.net/api/webhook-subscriptions/{id}",
)
data = res.json()
Go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://shippified.net/api/webhook-subscriptions/{id}", nil)
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://shippified.net/api/webhook-subscriptions/{id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Ruby
require 'net/http'
require 'uri'

uri = URI('https://shippified.net/api/webhook-subscriptions/{id}')
req = Net::HTTP::Get.new(uri)
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(req)
end
puts res.body
Java
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://shippified.net/api/webhook-subscriptions/{id}"))
    .GET()
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
DELETEhttps://shippified.net/api/webhook-subscriptions/{id}
Delete subscription.
Parameters
NameInTypeRequiredDescription
idpathstringyes
Responses
200 Deleted.
Code samples
cURL
curl -X DELETE "https://shippified.net/api/webhook-subscriptions/{id}"
TypeScript
const res = await fetch('https://shippified.net/api/webhook-subscriptions/{id}', {
  method: 'DELETE',
});
const data = await res.json();
Python
import requests

res = requests.request(
    "DELETE",
    "https://shippified.net/api/webhook-subscriptions/{id}",
)
data = res.json()
Go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("DELETE", "https://shippified.net/api/webhook-subscriptions/{id}", nil)
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://shippified.net/api/webhook-subscriptions/{id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Ruby
require 'net/http'
require 'uri'

uri = URI('https://shippified.net/api/webhook-subscriptions/{id}')
req = Net::HTTP::Delete.new(uri)
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(req)
end
puts res.body
Java
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://shippified.net/api/webhook-subscriptions/{id}"))
    .method("DELETE", BodyPublishers.noBody())
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
PATCHhttps://shippified.net/api/webhook-subscriptions/{id}
Update url / eventTypes / active.
Parameters
NameInTypeRequiredDescription
idpathstringyes
Request body application/json
{
  "url": "string",
  "eventTypes": [
    "order.created"
  ],
  "active": true
}
Responses
200 Updated.
{
  "id": "string",
  "userId": "string",
  "url": "string",
  "prefix": "string",
  "eventTypes": [
    "order.created"
  ],
  "active": true,
  "failureCount": 0,
  "needsSecretRotation": true,
  "lastFiredAt": "2024-01-01T00:00:00Z",
  "lastError": "string",
  "createdAt": "2024-01-01T00:00:00Z"
}
Code samples
cURL
curl -X PATCH "https://shippified.net/api/webhook-subscriptions/{id}" \
  -H "Content-Type: application/json" \
  -d '{"url":"string","eventTypes":["order.created"],"active":true}'
TypeScript
const res = await fetch('https://shippified.net/api/webhook-subscriptions/{id}', {
  method: 'PATCH',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"url":"string","eventTypes":["order.created"],"active":true}),
});
const data = await res.json();
Python
import requests

res = requests.request(
    "PATCH",
    "https://shippified.net/api/webhook-subscriptions/{id}",
    headers={
    "Content-Type": "application/json",
    },
    json={"url": "string", "eventTypes": ["order.created"], "active": True},
)
data = res.json()
Go
package main

import (
	"fmt"
	"io"
	"net/http"
	"strings"
)

func main() {
	req, _ := http.NewRequest("PATCH", "https://shippified.net/api/webhook-subscriptions/{id}", strings.NewReader(`{"url":"string","eventTypes":["order.created"],"active":true}`))
	req.Header.Set("Content-Type", "application/json")
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://shippified.net/api/webhook-subscriptions/{id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"url":"string","eventTypes":["order.created"],"active":true}');
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Ruby
require 'net/http'
require 'uri'

uri = URI('https://shippified.net/api/webhook-subscriptions/{id}')
req = Net::HTTP::Patch.new(uri)
req['Content-Type'] = 'application/json'
req.body = '{"url":"string","eventTypes":["order.created"],"active":true}'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(req)
end
puts res.body
Java
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://shippified.net/api/webhook-subscriptions/{id}"))
    .header("Content-Type", "application/json")
    .method("PATCH", BodyPublishers.ofString("{\"url\":\"string\",\"eventTypes\":[\"order.created\"],\"active\":true}"))
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
POSThttps://shippified.net/api/webhook-subscriptions/{id}/test
Send a synthetic event so you can verify your receiver round-trip.
Parameters
NameInTypeRequiredDescription
idpathstringyes
Request body application/json
{
  "eventType": "order.created"
}
Responses
200 Receiver round-trip result (does not count toward failureCount).
{
  "ok": true,
  "status": 0,
  "error": "string"
}
Code samples
cURL
curl -X POST "https://shippified.net/api/webhook-subscriptions/{id}/test" \
  -H "Content-Type: application/json" \
  -d '{"eventType":"order.created"}'
TypeScript
const res = await fetch('https://shippified.net/api/webhook-subscriptions/{id}/test', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"eventType":"order.created"}),
});
const data = await res.json();
Python
import requests

res = requests.request(
    "POST",
    "https://shippified.net/api/webhook-subscriptions/{id}/test",
    headers={
    "Content-Type": "application/json",
    },
    json={"eventType": "order.created"},
)
data = res.json()
Go
package main

import (
	"fmt"
	"io"
	"net/http"
	"strings"
)

func main() {
	req, _ := http.NewRequest("POST", "https://shippified.net/api/webhook-subscriptions/{id}/test", strings.NewReader(`{"eventType":"order.created"}`))
	req.Header.Set("Content-Type", "application/json")
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://shippified.net/api/webhook-subscriptions/{id}/test');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"eventType":"order.created"}');
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Ruby
require 'net/http'
require 'uri'

uri = URI('https://shippified.net/api/webhook-subscriptions/{id}/test')
req = Net::HTTP::Post.new(uri)
req['Content-Type'] = 'application/json'
req.body = '{"eventType":"order.created"}'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(req)
end
puts res.body
Java
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://shippified.net/api/webhook-subscriptions/{id}/test"))
    .header("Content-Type", "application/json")
    .method("POST", BodyPublishers.ofString("{\"eventType\":\"order.created\"}"))
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
POSThttps://shippified.net/api/webhook-subscriptions/{id}/rotate-secret
Rotate the signing secret. Returns the new raw secret once.
Parameters
NameInTypeRequiredDescription
idpathstringyes
Responses
200 Rotated. The `secret` field is only present in this response.
{}
Code samples
cURL
curl -X POST "https://shippified.net/api/webhook-subscriptions/{id}/rotate-secret"
TypeScript
const res = await fetch('https://shippified.net/api/webhook-subscriptions/{id}/rotate-secret', {
  method: 'POST',
});
const data = await res.json();
Python
import requests

res = requests.request(
    "POST",
    "https://shippified.net/api/webhook-subscriptions/{id}/rotate-secret",
)
data = res.json()
Go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("POST", "https://shippified.net/api/webhook-subscriptions/{id}/rotate-secret", nil)
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://shippified.net/api/webhook-subscriptions/{id}/rotate-secret');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Ruby
require 'net/http'
require 'uri'

uri = URI('https://shippified.net/api/webhook-subscriptions/{id}/rotate-secret')
req = Net::HTTP::Post.new(uri)
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(req)
end
puts res.body
Java
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://shippified.net/api/webhook-subscriptions/{id}/rotate-secret"))
    .method("POST", BodyPublishers.noBody())
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Was this page helpful?
Webhook Subscriptions