with ClickFunnels and Odoo?
Emit new event when a fresh or formerly anonymous contact is identified via email address or contact number.
Emit new event when a one-time order gets paid by a customer.
Emit new event when a subscription fee is paid by a customer.
The ClickFunnels API lets you interact programmatically with your ClickFunnels account, giving you control over your funnels, contacts, purchases, and more. With Pipedream, you can automate workflows that respond to a variety of triggers, such as new contacts or purchases. By connecting ClickFunnels with other apps available on Pipedream, you can streamline your sales process, sync data across platforms, and create powerful marketing automation.
import { axios } from "@pipedream/platform"
export default defineComponent({
props: {
clickfunnels: {
type: "app",
app: "clickfunnels",
}
},
async run({steps, $}) {
return await axios($, {
url: `https://${this.clickfunnels.$auth.subdomain}.myclickfunnels.com/api/v2/teams`,
headers: {
Authorization: `Bearer ${this.clickfunnels.$auth.api_access_token}`,
},
})
},
})
import xmlrpc from 'xmlrpc';
export default defineComponent({
props: {
odoo: {
type: "app",
app: "odoo",
}
},
async run({ steps, $ }) {
const url = this.odoo.$auth.server_url;
const db = this.odoo.$auth.db;
const username = this.odoo.$auth.username;
const password = this.odoo.$auth.password;
// Create clients for common and object endpoints
const common = xmlrpc.createSecureClient(`${url}/xmlrpc/2/common`);
const models = xmlrpc.createSecureClient(`${url}/xmlrpc/2/object`);
// Using async/await with promises
async function getFields() {
try {
// Authenticate and get uid
const uid = await new Promise((resolve, reject) => {
common.methodCall('authenticate', [db, username, password, {}], (error, value) => {
if (error) reject(error);
resolve(value);
});
});
// Get fields
const results = await new Promise((resolve, reject) => {
models.methodCall('execute_kw', [
db,
uid,
password,
'res.partner',
'fields_get',
[],
{ 'attributes': ['string', 'help', 'type'] }
], (error, value) => {
if (error) reject(error);
resolve(value);
});
});
return results;
} catch (error) {
throw new Error(error);
}
}
return await getFields();
},
})