@cabbiepete/gatsby-source-hubspot
v1.0.0
Published
Gatsby source plugin
Downloads
3
Maintainers
Readme
gatsby-source-hubspot
This source plugin for Gatsby will make posts from a Hubspot blog available in GraphQL queries.
Inspired by version from
"Lewis Robinson [email protected]"
Installation
# Install the plugin
npm install @cabbiepete/gatsby-source-hubspot
In gatsby-config.js
:
module.exports = {
plugins: [
{
resolve: 'gatsby-source-hubspot',
options: {
key: 'YOUR_HUBSPOT_API_KEY'
}
}
]
};
TODO
- Get topics https://api.hubapi.com/blogs/v3/topics?hapikey=b871c468-42ae-489c-82a1-aa0818027e2b&created__gt=1364424600000
And merge them onto the blog posts based on tag_ids
- Work out a way for "featured" blog posts to be part of featured on home page.
NOTE: More information on Hubspot authentication.
Filter Options
The filter
options for this plugin mirror the “Optional query string filters & options”. Please review those docs for more details.
| Parameter name | Description
|---------------------|-----------------------------------------------------------------------------------
| limit
| The number of items to return. Defaults to 20
| offset
| The offset set to start returning rows from. Defaults to 0.
| archived
| Returns the posts that match the boolean lookup (e.g. archived=false returns all posts currently not archived).
| blog_author_id
| Returns the posts that match a particular blog author ID value.
| campaign
| Returns the posts that match the campaign guid. The campaign guid can be found in the campaign dashboard URL (e.g. https://app.hubspot.com/campaigns/:portal_id/#/details/:campaign_guid).
| content_group_id
| Returns the posts that match the blog guid. The blog guid can be found in the blog dashboard URL (e.g. https://app.hubspot.com/blog/:portal_id/dashboard/:blog_guid).
| created
| Returns the posts that match a particular created time value. Supports exact, range, gt, gte, lt, lte lookups.
| deleted_at
| Returns the posts that match a particular deleted time value. Supports exact, gt, gte, lt, lte lookups.
| name
| Returns the posts that match the name value. Supports exact, contains, icontains, ne lookups.
| slug
| Returns the posts that match a particular slug value.
| updated
| Returns the posts that match a particular updated time. Supports exact, range, gt, gte, lt, lte lookups.
| state
| DRAFT, PUBLISHED, or SCHEDULED.
| order_by
| Return the posts ordered by a particular field value. Blog posts can currently only be sorted by publish_date. Use a negative value to sort in descending order (e.g. order_by=-publish_date). |
Example Filter Option Configuration
module.exports = {
plugins: [
{
resolve: 'gatsby-source-hubspot',
options: {
key: process.env.HUBSPOT_API_KEY,
filters: {
limit: 10,
state: 'PUBLISHED',
offset: 2
}
}
}
]
};
Querying Hubspot Posts
Once the plugin is configured, two new queries are available in GraphQL: allHubspotPost
and HubspotPost
.
Here’s an example query to load 10 posts:
query PostQuery {
allHubspotPost(limit: 10) {
edges {
node {
id,
title,
body,
state,
author {
id
avatar,
name,
full_name,
bio,
email,
facebook,
google_plus,
linkedin,
twitter,
twitter_username,
website,
slug
},
feature_image {
url,
alt_text
},
meta {
title,
description
},
summary,
published,
updated,
created,
slug
}
}
}
}
See the Hubspot COS Blog Post API docs or the GraphiQL UI for info on all returned fields.