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:
Navigate to the 'Integrations' tab within your Team Settings.
Input the URL endpoint that will receive the webhook payloads.
Select
GIGRADAR.PROPOSAL.UPDATE
to subscribe to proposal updates.Perform a test to ensure connectivity and correct payload reception.
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 |
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., |
data.proposal.jobId | string | Job ID that the proposal refers to |
data.proposal.jobTitle | string | Job title |
data.proposal.isProposalViewed | boolean |
|
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 |
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 |
|
data.job.budget.fixed | number | Fixed budget amount (if |
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 |
|
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 |
|
Body -> Data -> Job -> Qualification
JSON Path | Type | Description |
data.job.qualification.prefLocationsCountry[] | array<string> | Preferred freelancer countries |
data.job.qualification.prefLocationMandatory | boolean | If |
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 |
|
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?
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