import { ConfigurationError } from "@pipedream/platform";
import helloleads from "../../helloleads.app.mjs";
import {
clearObj,
parseObj,
} from "../../common/utils.mjs";
export default {
key: "helloleads-create-lead",
name: "Create Lead",
version: "0.0.1",
description: "Adds a new lead into the HelloLeads system. [See the documentation](https://github.com/PipedreamHQ/pipedream/files/13168532/HelloLeads_CRM_API_Documentation_POST_Method.pdf)",
type: "action",
props: {
helloleads,
listKey: {
propDefinition: [
helloleads,
"listKey",
],
},
firstName: {
type: "string",
label: "First Name",
description: "First name of the lead.",
},
lastName: {
type: "string",
label: "Last Name",
description: "Last name of the lead.",
optional: true,
},
designation: {
type: "string",
label: "Designation",
description: "Designation of the lead.",
optional: true,
},
company: {
type: "string",
label: "Company",
description: "Lead organization name.",
optional: true,
},
email: {
type: "string",
label: "Email",
description: "Primary email address of the lead.",
optional: true,
},
phone: {
type: "integer",
label: "Phone",
description: "Work phone number of the lead.",
optional: true,
},
mobile: {
type: "integer",
label: "Mobile",
description: "Mobile phone number of the lead.",
optional: true,
},
fax: {
type: "integer",
label: "Fax",
description: "Fax number of the lead.",
optional: true,
},
addressLine1: {
type: "string",
label: "Address Line 1",
description: "Address line1 of the lead.",
optional: true,
},
addressLine2: {
type: "string",
label: "Address Line 2",
description: "Address line2 of the lead.",
optional: true,
},
city: {
type: "string",
label: "City",
description: "City that the lead belongs to.",
optional: true,
},
state: {
type: "string",
label: "State",
description: "State that the lead belongs to.",
optional: true,
},
postalCode: {
type: "string",
label: "Postal Code",
description: "Zip code of the region that the lead belongs to.",
optional: true,
},
country: {
type: "string",
label: "Country",
description: "Country that the lead belongs to.",
optional: true,
},
website: {
type: "string",
label: "Website",
description: "Website reference of the lead.",
optional: true,
},
notes: {
type: "string",
label: "Notes",
description: "Specify any other details about the lead.",
optional: true,
},
interests: {
type: "string[]",
label: "Interests",
description: "A list of Product/Interest which offered by you is interested to Lead. `(Don't use special characters)`.",
optional: true,
},
category: {
type: "string",
label: "Category",
description: "Customer group of a Lead. `(Don't use special characters)`.",
optional: true,
},
tags: {
type: "string[]",
label: "Tags",
description: "Short tags (Tagging words) on lead. `(Do not use special characters)`.",
optional: true,
},
mobileCode: {
type: "string",
label: "Mobile Code",
description: "Mobile country code.",
optional: true,
},
dealSize: {
type: "string",
label: "Deal Size",
description: "Deal value of the business.",
optional: true,
},
potential: {
type: "string",
label: "Potential",
description: "How potential is the customer. By default, it will be Low.",
options: [
"High",
"Medium",
"Low",
"Not Relevant",
],
optional: true,
},
},
async run({ $ }) {
const {
helloleads,
listKey,
firstName,
lastName,
email,
mobile,
addressLine1,
addressLine2,
postalCode,
interests,
tags,
mobileCode,
dealSize,
...data
} = this;
if (!email && !mobile) throw new ConfigurationError("You must fill in at least Email or Mobile");
const response = await helloleads.createLead({
$,
data: clearObj({
list_key: listKey,
first_name: firstName,
last_name: lastName,
email: email,
mobile: mobile,
address_line1: addressLine1,
address_line2: addressLine2,
postal_code: postalCode,
interests: interests && parseObj(interests).toString(),
tags: tags && parseObj(tags).toString(),
mobile_code: mobileCode,
deal_size: dealSize,
...data,
}),
});
$.export("$summary", `A new lead with Id: ${response.lead_id} created successfully!`);
return response;
},
};