import referralhero from "../../referralhero.app.mjs";
export default {
key: "referralhero-add-subscriber",
name: "Add Subscriber",
description: "Adds a new subscriber to to a list. [See the documentation](https://support.referralhero.com/integrate/rest-api/endpoints-reference#add-a-subscriber)",
version: "0.0.1",
type: "action",
props: {
referralhero,
listId: {
propDefinition: [
referralhero,
"listId",
],
},
email: {
type: "string",
label: "Email",
description: "Email address of the subscriber",
},
domain: {
type: "string",
label: "Domain",
description: "The URL for the referral link",
},
name: {
type: "string",
label: "Name",
description: "Name of the subscriber",
optional: true,
},
doubleOptin: {
type: "boolean",
label: "Double Opt-in",
description: "If set to `false`, the subscriber will not receive a confirmation email",
default: true,
optional: true,
},
source: {
type: "string",
label: "Source",
description: "The source of the subscriber. Used for analytics.",
optional: true,
},
referrer: {
type: "boolean",
label: "Referrer",
description: "Set a referrer for the subscriber by providing the referrer's referral code or email",
optional: true,
},
conversionValue: {
type: "string",
label: "Conversion Value",
description: "The monetary value of the referral",
optional: true,
},
pending: {
type: "boolean",
label: "Pending",
description: "Set to `true` to set the referral status to pending",
default: false,
optional: true,
},
},
async run({ $ }) {
const response = await this.referralhero.addSubscriber({
listId: this.listId,
params: {
email: this.email,
name: this.name,
double_optin: this.doubleOptin,
source: this.source,
referrer: this.referrer,
domain: this.domain,
conversion_value: this.conversionValue,
status: this.pending
? "custom_event_pending"
: undefined,
},
$,
});
if (response?.status === "error") {
throw new Error(response.message);
}
if (response?.data?.id) {
$.export("$summary", `Successfully added subscriber with ID ${response.data.id}.`);
}
return response;
},
};