Webhooks allows you to integrate Cubicl with other applications. Cubicl notifies the webhook URL you added each time the type of action you chose happens.
When client is created,
When client is deleted,
When task is created,
When task is updated,
When task is deleted,
When post is created in task,
When task state is changed,
When task is archived,
When the task is restored, the URL you added will be notified.
To add webhooks to Cubicl, first click on Others in the Navigation Menu, then the Integration button. In the page that opens, you can add your webhook URLs related to the specified actions in the Webhook Settings table. If you're using applications like Zapier, Pabbly Connect, etc., paste the link you get from these platforms into the URL field. If you're integrating into your own system, provide a URL from your system.
After you've added the URL, select the type of action from the list that will trigger the notification. If it's a task-related action, you must also associate it with a project. Once this is done, click save to create a record of the webhook for the selected action type. Cubicl will then notify this URL each time the chosen action occurs.
Endpoints
Another way of creating and interacting with webhooks is using our API.
Get Webhooks
GEThttps://cubicl.io/api/v1/users/self/webhook
Returns webhook records related to the currently authenticated user.
Webhook[]
Create Webhook
POSThttps://cubicl.io/api/v1/users/self/webhook
Request Body
Webhook
{// 2: Project id is required for webhooks related to tasks.// 118: Webhook type is not supported. code: number}
typeTask= { _id:string; name:string; desc:string; state:string; start:number|null; // Start date deadline:number|null; assignees:User[]; assignedBy:User; // Owner followers:User[];// Portal users who follow this task if task is shared in// the client portal. portalFollowers?:PortalUser[];// From 1 to 5. 5 is the highest. priority:number;// A score to sort same-priority tasks among themselves. // Lowest score is shown at the top. priorityScore:number;// Project group:Project;// Organization org:Organization;/* none: Task has no steps * steps: Task has a checklist * progress: Task has a progress bar */ stepType:'none'|'steps'|'progress';// Check below for definitions of these types. steps?:CheckList|ProgressBar; customer:Customer|null, tags:Tag[]; subtasks:Task[]; parent:Task|null;// This property exists if task is created for an incoming email. email?:EmailUser;// This property exists if task is created for a support request// through the Client Portal feature. support?:PortalUser; private:boolean; recurrent?:boolean; sharedWithCustomer?:boolean; estimatedTime?:number; // Duration in seconds.// If task has custom fields, holds the name and value for each field. customFields?: {[fieldName:string]:string};// If task is recurrent, shows if this is the newest copy. lastCopy?:boolean; createdAt:number; updatedAt:number; completedAt?:number; archivedAt?:number|null; deleted_at?:number;// 'day month year, hours:minutes' format. createdAtFormatted:string; updatedAtFormatted:string; completedAtFormatted?:string; archivedAtFormatted?:string; deletedAtFormatted?:string;}
Task Activity
typeTaskActivity= { _id :string;// User who did the activity user:User;// Portal user who created the activity. Exists only when// activity is created in the Client Portal by a portal user. portalUser?:PortalUser; content:string; type ="post";// If activity is a reply to a previous post, keeps the referenced activity id. replyToId?:string;// Whether the activity (post) is shared with a Client Portal user. customerCanSee:boolean;// List of users mentioned in the post. mentions:Mention[];}
Task State
typeTaskState= { name:string; type:'waiting'|'active'|'completed'|'suspended'; color:string; // Hex color code. textColor:string; // Hex color code.// Shows whether this is the state tasks will be created in when the task// state is not specified in Create Task endpoint. isDefault?:boolean;}
Client
typeCustomer= { _id:string; name:string; // A short name shown in UI and used for search phone:string|null; email:string|null; fullname:string|null;// People working at this client you are in contact with contacts:Contact[];// An object where keys are custom field ids and values are field values// customFields can be null customFields: { [fieldId:string]:string|null } |null; tax : { administration?:string; number?:string; address?:string; } createdBy:User;// List of users who get notifications for activities from portal users// of this client portalCustomerManagerIds:User[]; org:Organization; createdAt:number; updatedAt:number; deleted_at?:number;// 'day month year, hours:minutes' format. createdAtFormatted:string; updatedAtFormatted:string; deletedAtFormatted?:string;}
typeProgressBar= { completed:number; total:number;}typeCheckList=TaskStep[];typeTaskStep= { id:string; name:string; desc?:string; assignees:string[]; // Ids of the step assignees/* Task steps are recursive. They can have sub-steps too. * If not set, the step has no sub-steps. * If 'steps', a property named 'steps' holds sub-steps. * If 'progress', this step object has a property named 'total'. */ stepType?:'steps'|'progress'; steps?:CheckList;// If 'stepType' is 'progress', this is a number and indicates the total number// of steps in the bar. Otherwise, a boolean to indicate completion. completed:boolean|number;// Set when 'stepType' is 'progress' total?:number;}
typeProject= { _id:string; name:string;// Projects can have multiple parents. The root project has no parents. parents:string[] |null;// Admin user ids. admins:string[];// Member user ids. members:string[];// Child group ids. groups:string[];// Task state definitions. Exists only when states are customized. Read// Task States section for more info. taskStates?:TaskState[];// Permissions set in the project. Only exists when project permissions// are customized. Read the Permissions section for more info. perms?: { members:PermissionLevels, everybody:PermissionLevels,// An object where keys are userIds and values are permission levels object. users?: { [userId:string]:PermissionLevels, } }, customTaskFields?:CustomTaskField[]; private:boolean; orgId:string; estimatedTimeEnabled:boolean; createdAt:number; updatedAt:number;}