APP PARTNER
Become an ActiveCampaign App Partner
Help over 180,000 businesses around the world deliver unique customer experiences by developing an app with ActiveCampaign.
API Documentaton
Version 3 of the ActiveCampaign API is structured around REST, HTTP, and JSON. API endpoint URLs are organized around resources, such as contacts or deals. That means you can easily call on ActiveCampaign actions for your integration.
App Studio
Build upon the leading Customer Experience Automation platform and expose your app to a growing ecosystem, and 180K+ customers globally.
Webhooks
Get notified at the URL of your choice when your contacts do something you care about—like opening a campaign or clicking a link.
Get started developing with ActiveCampaign in minutes
# Retrieve a contact
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://youraccountname.api-us1.com/api/3/contacts/id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
// Retrieve a contact
var request = require("request");
var options = {
method: 'GET',
url: 'https://youraccountname.api-us1.com/api/3/contacts/id'
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
# Retrieve a contact
import requests
url = "https://youraccountname.api-us1.com/api/3/contacts/id"
response = requests.request("GET", url)
print(response.text)
// Retrieve a contact
var data = null;
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://youraccountname.api-us1.com/api/3/contacts/id");
xhr.send(data);
# Retrieve a contact
curl --request GET \
--url 'https://youraccountname.api-us1.com/api/3/contacts/id'
# Retrieve an account
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://youraccountname.api-us1.com/api/3/accounts/id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
// Retrieve an account
var request = require("request");
var options = {
method: 'GET',
url: 'https://youraccountname.api-us1.com/api/3/accounts/id'
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
# Retrieve an account
import requests
url = "https://youraccountname.api-us1.com/api/3/accounts/id"
response = requests.request("GET", url)
print(response.text)
// Retrieve an account
var data = null;
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://youraccountname.api-us1.com/api/3/accounts/id");
xhr.send(data);
# Retrieve an account
curl --request GET \
--url 'https://youraccountname.api-us1.com/api/3/accounts/id'
# Retrieve a deal
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://youraccountname.api-us1.com/api/3/deals/id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
// Retrieve a deal
var request = require("request");
var options = {
method: 'GET',
url: 'https://youraccountname.api-us1.com/api/3/deals/id'
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
# Retrieve a deal
import requests
url = "https://youraccountname.api-us1.com/api/3/deals/id"
response = requests.request("GET", url)
print(response.text)
// Retrieve a deal
var data = null;
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://youraccountname.api-us1.com/api/3/deals/id");
xhr.send(data);
# Retrieve a deal
curl --request GET \
--url 'https://youraccountname.api-us1.com/api/3/deals/id'
# Retrieve a campaign
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://youraccountname.api-us1.com/api/3/campaigns?orders%5Bsdate%5D=ASC")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
// Retrieve a campaign
var request = require("request");
var options = {
method: 'GET',
url: 'https://youraccountname.api-us1.com/api/3/campaigns',
qs: {'orders[sdate]': 'ASC'}
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
# Retrieve a campaign
import requests
url = "https://youraccountname.api-us1.com/api/3/campaigns"
querystring = {"orders[sdate]":"ASC"}
response = requests.request("GET", url, params=querystring)
print(response.text)
// Retrieve a campaign
var data = null;
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://youraccountname.api-us1.com/api/3/campaigns?orders%5Bsdate%5D=ASC");
xhr.send(data);
# Retrieve a campaign
curl --request GET \
--url 'https://youraccountname.api-us1.com/api/3/campaigns?orders%5Bsdate%5D=ASC'
# Retrieve an automation
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://youraccountname.api-us1.com/api/3/automations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
// Retrieve an automation
var request = require("request");
var options = {
method: 'GET',
url: 'https://youraccountname.api-us1.com/api/3/automations'
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
# Retrieve an automation
import requests
url = "https://youraccountname.api-us1.com/api/3/automations"
response = requests.request("GET", url)
print(response.text)
// Retrieve an automation
var data = null;
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://youraccountname.api-us1.com/api/3/automations");
xhr.send(data);
# Retrieve an automation
curl --request GET \
--url 'https://youraccountname.api-us1.com/api/3/automations'
APP STUDIO
See what’s possible with the new ActiveCampaign App Studio
APP MARKETPLACE
Reach 180,000+ potential customers
Share your app with 180K+ customers in an App Marketplace full of hundreds of integrations for all types of businesses.
OUT-OF-THE BOX DOESN'T WORK FOR EVERY BUSINESS
Build unique solutions for unique businesses
WHY DEVELOPERS CHOOSE ACTIVECAMPAIGN
"Partnering with ActiveCampaign has added great value to our 8M+ customers. We’ve noticed a significant increase in paid users who have integrated JotForm directly with ActiveCampaign. Their team was helpful during the entire process of building the integration and they have been a great partner to work with."
Briana Strauss, Partner Marketing Manager
“We chose to include the Deep Data API Integration to pass in donation order data and we use the native app integration to update close to 20 custom fields - data that automations can take action on. [This allows] organizations to manage the customer journey of their donors from a casual donor to a fully engaged patron.”
Stephen Lynch
"Integrating with ActiveCampaign has had a positive impact on our business and our mutual customers absolutely love the functionality it provides them! Implementation was straightforward and the team supported us every step of the way. We will continue to build more with ActiveCampaign in the future."
Aaron VandenBrink, Product Manager
Building a Bonjoro automation action was easily 5-10 times faster than if we were doing our own implementation from scratch. The ActiveCampaign team was attentive in helping us through the entire build. With this integration, joint users can record personal videos after things like a purchase or opt-in!
Cliff Dacion, Full Stack Engineer
70% of ActiveCampaign’s 180,000+ customers use an integration. It could be yours.
integration
Highest Rated
A global footprint
ActiveCampaign has a global network of 180K+ customers in over 170 countries
Highly engaged customers
An industry leader
Start building with ActiveCampaign today
Become an App Partner and start creating unique customer experiences