Solavel Docs

Integrations

Last updated

The project Integrations tab connects one project to other systems:

  • Outgoing webhooks push project events (task created, sprint started, document created…) to an HTTPS endpoint you own, signed so the receiver can trust them.
  • Incoming webhook tokens let an outside system (a form tool, GitHub, a script) create tasks or comments in the project.
  • Public API tokens give another system scoped, read or write access to the project's tasks and time through the SolaProjects API.
  • Native provider readiness shows ready-made connections (Slack, Microsoft Teams, GitHub, GitLab, Google Calendar, Google Drive, OneDrive, Zapier / IFTTT) and whether each can be connected.

Use it when a project needs to talk to another tool — for example to post task updates to a client dashboard, or to turn website enquiries into tasks. Project managers and administrators set it up; it is usually done once per project with your IT contact.

Two pages are called Integrations. This page covers the project tab. The Integrations item in the Workspace part of the sidebar (/projects/settings/integrations) is the organization's SolaCount connection — see Organization SolaCount connection below and Budget and finance.

Where to find it

Sidebar Project section → Integrations (between Automations and AI)
URL /projects/{project}/integrations
Command palette Integrations · {project name} under Current project

Who sees it:

  • Plan: integrations are a Premium-plan feature (also Enterprise). On lower plans the tab is hidden. If a paid plan lapses, the tab disappears and webhooks stop being offered until you renew.
  • Role: only people who can edit the project can load the tab (see Permissions). Others see "We couldn’t load integrations." with Retry.

Screen tour

Header card

Integrations — Outgoing webhooks, incoming tokens, and delivery history.

Tile Meaning
Outgoing Active outgoing webhooks.
Incoming tokens Active, unrevoked incoming tokens.
Recent deliveries Delivery attempts listed in Recent deliveries.
Failed deliveries Failed attempts among them (red when above zero).

Outgoing webhooks card

POST project events to an external HTTPS endpoint, signed with HMAC-SHA256. New webhook at the top-right.

Each webhook card shows the name, endpoint URL, a status badge (Active, Disabled or Archived), one chip per subscribed event, and {n} deliveries · {n} failed. Row actions (not on archived webhooks): Edit, Test, Rotate secret, Archive.

Empty state: No outgoing webhooks — Create one to push events to an external system.

Incoming webhook tokens card

Let external systems create tasks/comments by POSTing with a secret token. New token at the top-right.

Each token card: name, provider (Custom or GitHub) · last used {date} or never used, badge Active, Inactive or Revoked. Actions (not on revoked tokens): Rotate, Revoke.

Empty state: No incoming tokens — Create a token to accept inbound webhooks.

Public API card

Create scoped bearer tokens for documented project, task and time-entry endpoints. Buttons: Docs (opens the OpenAPI reference in a new tab) and New token.

Each token card: name, last used {date} / never used, status badge, one chip per ability. Actions: Rotate, Revoke.

Empty state: No API tokens — Create a token for the public API.

Recent deliveries card

Outgoing delivery attempts and their outcome. Badge with the count.

Column Meaning
When Date of the delivery.
Webhook Webhook name, or Archived webhook.
Event Event type, e.g. task.status_changed.
Status Delivered (green), Pending (amber, waiting or retrying), Failed (red), Skipped.
Attempts How many times SolaProjects has tried.
Response The HTTP status code returned by your endpoint, error when no response was received, or —.
(button) Retry on any delivery that is not delivered.

Empty state: No deliveries yet — Delivery attempts appear here once an event fires or you send a test.

Native provider readiness card

Connection state and setup prerequisites for provider-specific integrations. One tile per provider:

Provider What it does
Slack Send project notifications to Slack and receive task commands from Slack.
Microsoft Teams Send project notifications to Teams channels and support Teams actions.
GitHub Link repository events, issues, pull requests and commits to project tasks.
GitLab Link GitLab merge requests, issues and pipeline events to project tasks.
Google Calendar Sync project milestones and task dates to Google Calendar.
Google Drive Attach or sync project documents with Google Drive folders.
OneDrive Attach or sync project documents with OneDrive folders.
Zapier / IFTTT Expose SolaProjects triggers and actions to no-code platforms.

Each tile shows a status (Available, Pending, Active, Failed), the capability, and either Live provider configuration detected. or Local simulator is available; production credentials are activation settings. (the provider is not yet live for your organization). It may also show Blocked by missing setup: …, Activation notes: …, OAuth callback pending., Last error: …, the last message or last event received.

Events you can send

Tick one or more on the webhook form:

Event Sent when
task.created A task is created (including from an incoming webhook).
task.updated A task is edited.
task.status_changed A task's status changes.
task.completed A task is marked done.
task.blocked A task is marked blocked.
comment.created A task comment is added.
doc.created A project document is created.
time_entry.created Time is logged.
milestone.completed A milestone is completed.
sprint.started / sprint.completed A sprint starts / completes.
share_link.created A guest share link is created.
automation.run_failed / automation.rule_failed An automation run fails.
ai.suggestion_applied An AI suggestion is applied.

Each request is a JSON POST with headers X-SolaProjects-Event (event type), X-SolaProjects-Delivery (delivery id) and X-SolaProjects-Signature (HMAC-SHA256 of the raw body with your signing secret), and User-Agent: SolaProjects-Webhooks/1.0. Verify the signature before trusting a request.

Retries. A failed delivery is retried automatically after about 1, 5, 15 and 60 minutes; after the fifth attempt it stays Failed. Use Retry to try again by hand.

Tasks

Create an outgoing webhook

  1. Open the project → Integrations → New webhook.

  2. Fill in New outgoing webhook:

    Field Required Rules / defaults Notes
    Name Yes Up to 160 characters. e.g. Client dashboard.
    Endpoint URL (HTTPS) Yes Valid URL, up to 2,048 characters, public HTTPS. Placeholder https://example.com/hooks/solaprojects. Local and private-network addresses are refused: "Use a public HTTPS endpoint. Local and private network URLs are blocked."
    Events Yes At least one. See the table above.
    Active — Ticked by default. Untick to save it Disabled.
  3. Click Create. You see Outgoing webhook created. and the Signing secret dialog: "Store this now — it is shown only once and cannot be retrieved later." Click Copy (Copied to clipboard.), store the secret in the receiving system, then Done.

Edit, test, rotate and archive a webhook

Action Steps Result
Edit Change name, URL, events or Active → Save. Outgoing webhook updated.
Test Click Test. Test delivery queued. A row appears in Recent deliveries.
Rotate secret Confirm Rotate secret — "The current secret will stop working. Update connected services with the new secret." Secret rotated. and the new secret is shown once.
Archive Confirm Archive webhook — "This outgoing webhook will stop delivering project events." Webhook archived. Badge Archived; no more deliveries; history kept.

Create an incoming webhook token

  1. Click New token on Incoming webhook tokens.
  2. Name (required, up to 160 characters) and Provider: Custom (default) or GitHub.
  3. Click Create → Incoming token created. Copy the Incoming webhook token shown once: "Use this as the token in your incoming webhook URL. Shown only once."

The external system then sends POST /api/projects/webhooks/incoming/{token} with a JSON body (limit 60 requests per minute per sender):

Provider Body What happens
Custom {"title": "...", "description": "...", "priority": "high"} Creates a private task in Todo (priority defaults to medium; title cut at 180 characters). Response includes the new task_key.
Custom {"task_key": "ALN-14", "comment": "..."} Adds an internal comment to that task.
GitHub Issue or issue-comment event An issue becomes a task; a comment on an issue whose title contains a task key (e.g. ALN-14) becomes a comment on that task.

Anything else is refused with "Webhook rejected."; a revoked or wrong token gets the same answer. Tasks and comments are authored by the person who created the token.

Rotate issues a new token and revokes the old one immediately (Token rotated.). Revoke asks Revoke token — "Requests using this token will no longer have access." → Token revoked.

Create a public API token

  1. Click New token on Public API.

  2. Name (required, up to 120 characters) and Abilities (at least one; projects:read, tasks:read and time:read are pre-ticked):

    Ability Allows
    projects:read Read this project.
    tasks:read / tasks:write Read / create and update tasks.
    time:read / time:write Read / create time entries.
  3. Create → API token created. Copy the Project API token: "Use this as a Bearer token for /api/v1. Shown only once."

Tasks created through the API fire the same automations and webhooks as tasks created in the app. Rotate → confirm Rotate token ("The current token will stop working. Update connected services with the new token.") → API token rotated. Revoke → API token revoked.

Retry a failed delivery

In Recent deliveries, click Retry on the row → Delivery retried. Check Status and Response after a moment.

Connect a native provider

  1. On the provider tile pick the channel (e.g. #projects for Slack) and click Connect → {Provider} connection started.
  2. Complete the authorization dialog {Provider} authorization with Complete callback (or Later) → Native integration connected.
  3. Once connected, use Send test ({Provider} test message sent.), Refresh ({Provider} refreshed.) or Disconnect ({Provider} disconnected.).

Tiles in simulator mode also show Simulate event and Error for checking the setup before the provider goes live; they do not contact the real service.

Statuses

Object Statuses
Outgoing webhook Active, Disabled (saved with Active unticked), Archived
Delivery Pending, Delivered, Failed, Skipped
Incoming / API token Active, Inactive, Revoked
Native provider Available, Pending, Active, Failed

Permissions

Role Open the tab Create / change webhooks, tokens, providers
Organization owner Yes Yes
Projects Administrator Yes Yes
Projects Manager who is a project Manager here Yes Yes
Projects Member, project Viewer, guests No No

If integration editing is switched off for your organization, the tab is read-only (no New, row actions or Retry). A refused change shows "Integration edits are disabled or not permitted."; a stale page "Please reload and try again." Secrets and tokens are never shown again after the one-time dialog — not even to owners.

Organization SolaCount connection

The Workspace sidebar item Integrations (/projects/settings/integrations) is a different page. It shows whether SolaProjects is connected to SolaCount (Connected, Ready to connect, Integration paused, Disconnected — history preserved, …), and lets an organization owner or Finance administrator connect, pause, disconnect or check the connection. A single project can opt out on its Settings tab (Integrations card → Internal project / finance disabled). See Budget and finance and the SolaProjects overview.

Worked examples

Example 1 — Enquiries become tasks (everyday)

Sara Khan wants website enquiries for Al Noor Showroom Fit-out (ALN-FIT) to land as tasks.

  1. New token → Name Website enquiries, Provider Custom → Create; she gives the token to the web developer.
  2. The website posts {"title": "Quote request – reception desk", "priority": "high"}.
  3. Task ALN-31 Quote request – reception desk appears in Todo, private, priority High. The token card shows last used Oct 6.

Example 2 — Client dashboard feed with a failure (full scenario)

Omar Haddad connects Al Noor Trading LLC's site dashboard.

Step Action Result
1 New webhook: Site dashboard, https://hooks.alnoor.ae/projects, events task.status_changed, task.completed, milestone.completed. Outgoing webhook created.; signing secret copied to the dashboard.
2 Test. Test delivery queued.; row Delivered, Response 200.
3 Sara moves ALN-12 to Done. Two deliveries: task.status_changed and task.completed, both Delivered.
4 The dashboard is down for maintenance. Next delivery shows Pending, then Failed with Response 503; header Failed deliveries 1 in red; it is retried at ~1, 5, 15, 60 minutes.
5 Dashboard back; Omar clicks Retry. Delivery retried. → Delivered.
6 IT suspects the secret leaked. Omar clicks Rotate secret and confirms. Secret rotated.; new secret shown once; IT updates the dashboard.

How it connects

Where Link
Tasks Incoming tokens and the API create tasks and comments; task changes send events.
Planning Milestone completion and sprint start/complete send events.
Automations Act inside SolaProjects; failed runs can be sent out as events.
Guest share links share_link.created event.
AI ai.suggestion_applied event.
Time tracking time_entry.created event; time API abilities.
Settings Per-project SolaCount finance switch.

Tips and common problems

Problem Cause Fix
Tab missing. Plan below Premium or expired. Upgrade or renew.
Use a public HTTPS endpoint… URL is http, localhost or a private address. Use a public HTTPS URL.
Lost a secret or token. Shown only once. Rotate and update the other system.
Deliveries Failed with a 4xx code. Your endpoint rejects the request (often signature check). Check the endpoint uses the current secret.
Webhook rejected. on incoming calls. Revoked/wrong token, or body has no title or task_key + comment. Check token and body.
Comment not added from GitHub. Issue title has no task key. Put the key (e.g. ALN-14) in the issue title.
API returns access denied. Token lacks the ability or is revoked. Create a token with the right abilities.
Provider says Local simulator is available… Not yet live for your organization. Ask Solavel support about activation.

Related