Skip to main content

šŸ”„ Connect GigRadar to your CRM or other external systems

This guide explains how GigRadar can integrate with any system using a custom webhook setup.

Vadym O avatar
Written by Vadym O
Updated over 2 weeks ago

Streamline Your Operations with Real-Time Updates

A webhook is a type of event-based API. GigRadar's Custom Webhook Integration is designed to bridge the gap between your GigRadar activities and your internal systems or third-party apps. Here's how it can transform your operations:

Practical Use Case Scenarios:

  • CRM Coordination: Automatically update deal cards in your CRM when new proposals are sent or when you receive replies to existing proposals.

  • Notification Customization: Receive tailored notifications about proposal replies directly to your preferred platforms, such as Discord or MS Teams.

  • Financial Syncing: Integrate connects expense data seamlessly with your financial system, ensuring accurate and up-to-date financial reporting.

How to Use Webhooks with GigRadar:

Setting up webhooks with GigRadar is a straightforward process:

  1. Navigate to the 'Integrations' tab within your Team Settings.

  2. Input the URL endpoint that will receive the webhook payloads.

  3. Select GIGRADAR.PROPOSAL.UPDATE to subscribe to proposal updates.

  4. Perform a test to ensure connectivity and correct payload reception.

  5. Once confirmed, save your webhook to start receiving real-time data.

ā— For an example guide on integrating GigRadar proposal data with Zapier, check out our step-by-step tutorial of GigRadar -> Hubspot setup.
​
ā–¶ļø You can also watch a video that includes the integration process. Click here to watch a video. ā–¶ļø

Data at Your Fingertips: Webhook Fields Sent

Body

JSON Path

Type

Description

type

string

Always "GIGRADAR.PROPOSAL.UPDATE"

Body -> Data

JSON Path

Type

Description

data.teamName

string

Name of the GigRadar team that owns the scanner

data.teamId

string

Unique ID for that team

data.scannerName

string

Friendly name of the scanner / process that generated the event

data.scannerId

string

Scanner’s unique ID. Only available if the proposal was sent by GigRadar's Business Manager

Body -> Data -> Proposal

JSON Path

Type

Description

data.proposal.uid

string

Proposal unique identifier

data.proposal.createdAt

ISO-8601 string

UTC timestamp when the proposal was created

data.proposal.status

number

Current status code (e.g., 7 = sent)

data.proposal.jobId

string

Job ID that the proposal refers to

data.proposal.jobTitle

string

Job title

data.proposal.isProposalViewed

boolean

false until the freelancer opens the proposal, then true

Body -> Data -> Proposal -> Author

JSON Path

Type

Description

data.proposal.author.name

string

Author’s full name

data.proposal.author.uid

string

Author’s unique ID

data.proposal.author.slug

string

Author’s profile slug

data.proposal.author.avatarUrl

string

URL to author’s avatar

Body -> Data -> Proposal -> Freelancer

JSON Path

Type

Description

data.proposal.freelancer.name

string

Freelancer’s full name

data.proposal.freelancer.rid

string

Freelancer’s record ID

data.proposal.freelancer.slug

string

Freelancer’s profile slug

data.proposal.freelancer.avatarUrl

string

URL to freelancer’s avatar

Body -> Data -> Proposal -> Chat

JSON Path

Type

Description

data.proposal.chat.chatId

string

Chat identifier. Empty string "" = private chat; missing key = chat not started

Body -> Data -> Job

JSON Path

Type

Description

data.job.ciphertext

string

Encrypted job reference

data.job.createdOn

ISO-8601 string

Original posting timestamp

data.job.title

string

Job title

data.job.description

string

Job description

data.job.questions

array

Screening questions (may be empty)

data.job.duration

string

Expected project duration (e.g., ā€œLess than 1 monthā€)

data.job.engagement

string

Weekly time commitment (e.g., ā€œLess than 30 hrs/weekā€)

data.job.connectsPrice

number

Number of connects used for the proposal

data.job.talentPreference

string

Additional talent requirements (may be empty)

data.job.experienceLevel

string

Required experience level (e.g., ā€œEntry levelā€)

data.job.categoryName

string

Job category

data.job.subCategoryName

string

Job sub-category

data.job.skills[]

array<object>

Required skills

data.job.skills[*].name

string

Skill name

data.job.skills[*].uid

string

Skill UID (can be blank)

data.job.jobTrend[]

array

Duplicate legacy trend

data.job.isPrivate

boolean

Whether job is private

data.job.privateScrappedAt

string

Last private-scrape timestamp

Body -> Data -> Job -> Budget

JSON Path

Type

Description

data.job.budget.type

number

1 = fixed price, 2 = hourly

data.job.budget.fixed

number

Fixed budget amount (if type = 1)

data.job.budget.hourlyMin

number

Minimum hourly rate (if hourly)

data.job.budget.hourlyMax

number

Maximum hourly rate (if hourly)

Body -> Data -> Job -> Client

JSON Path

Type

Description

data.job.client.paymentVerified

boolean

true if client’s payment method is verified

data.job.client.location.country

string

Client country

data.job.client.location.city

string

Client city (may be blank)

data.job.client.location.timezone

string

Client timezone (may be blank)

data.job.client.stats.feedbackScore

number

Overall feedback score

data.job.client.stats.totalSpent

number

Total amount spent

data.job.client.stats.hireRate

number

Hire-rate percentage

data.job.client.stats.averageHourlyRatePaid

number

Average hourly rate paid

data.job.client.stats.totalHires

number

Number of hires

data.job.client.stats.totalHiresActive

number

Active hires

data.job.client.stats.totalHireHours

number

Hours hired

data.job.client.stats.jobsPostedCount

number

Jobs posted

data.job.client.company.industry

string

Company industry

data.job.client.company.size

string

Company size

data.job.client.company.isEnterprise

boolean

true if enterprise account

Body -> Data -> Job -> Qualification

JSON Path

Type

Description

data.job.qualification.prefLocationsCountry[]

array<string>

Preferred freelancer countries

data.job.qualification.prefLocationMandatory

boolean

If true, location preference is mandatory

data.job.qualification.spokenLanguages[]

array<string>

Required spoken languages

Body -> Data -> Job -> Meta

JSON Path

Type

Description

data.job.meta.clientHireRate

number

Computed client hire rate

data.job.meta.descriptionLength

number

Character count of description

data.job.meta.hourlyProjectBudgetEstimation

number|null

Estimated hourly budget

data.job.meta.fixedProjectRateEstimation

number

Estimated fixed project rate

data.job.meta.clientSpentPerHire

number

Avg. spend per hire

data.job.meta.jobTrend[]

array

Trend data

data.job.meta.isPrivate

boolean|null

true if job marked private

data.job.meta.privateScrappedAt

string|null

When private job was scraped

Need to Generate Job URL?

Create a direct link to the Upwork job’s Apply page by combining the fixed prefix with the ciphertext value from data.job.ciphertext. Code example below:
​jobUrl = "https://www.upwork.com/freelance-jobs/apply/" + data.job.ciphertext

Understanding Proposal Statuses:

Status

Code

SUBMITTED

2

ACTIVE

7

JOB_CLOSED

8

HIRED

10

GigRadar's Custom Webhook Integration ensures that you never miss a critical update and empowers you to respond to changes in real-time. Set up your webhooks today and take the first step towards a more connected and efficient workflow.

Frequently Asked Questions (FAQs) about GigRadar's Custom Webhook Integration

What is a webhook integration, and why should I use it with GigRadar?

A webhook is a type of event-based API. Webhook integration is a way for apps to communicate and deliver real-time information to each other automatically. Integrating webhooks with GigRadar allows you to streamline your workflows by receiving updates directly in your preferred systems as soon as they occur in GigRadar.

How do I set up a webhook with GigRadar?

You can set up a webhook by going to the 'Integrations' tab in your Team Settings, adding the URL where you want to receive the data, selecting the events you want to subscribe to, testing the connection, and then saving your settings.

Can I send webhook data to multiple endpoints?

Yes, you can configure multiple webhooks to send data to different endpoints depending on your operational requirements. Please contact support for this feature.

How quickly are webhook events dispatched after an update occurs?

  1. GIGRADAR.PROPOSAL.UPDATE events are dispatched in bulk at 1-2 hour intervals.

What should I do if my webhook isn't receiving data?

First, check the webhook URL for accuracy and ensure that the receiving system is configured correctly to accept POST requests. You can also review the webhook logs in GigRadar for any errors and try sending a test payload.

Are there any security measures I should take when using webhooks?

It's recommended to use secure HTTPS endpoints for your webhooks and to validate the incoming data against any secret tokens or signatures to ensure the data is coming from GigRadar.

Can I update or change my webhook settings after creating them?

Absolutely. You can update or disable your webhooks at any time from the 'Integrations' tab in your Team Settings.

Watch a video

Did this answer your question?