1.0.0 • Published 6 years ago

@cabbiepete/gatsby-source-hubspot v1.0.0

Weekly downloads
1
License
MIT
Repository
github
Last release
6 years ago

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 lewisvrobinson@gmail.com"

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

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 nameDescription
limitThe number of items to return. Defaults to 20
offsetThe offset set to start returning rows from. Defaults to 0.
archivedReturns the posts that match the boolean lookup (e.g. archived=false returns all posts currently not archived).
blog_author_idReturns the posts that match a particular blog author ID value.
campaignReturns 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_idReturns 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).
createdReturns the posts that match a particular created time value. Supports exact, range, gt, gte, lt, lte lookups.
deleted_atReturns the posts that match a particular deleted time value. Supports exact, gt, gte, lt, lte lookups.
nameReturns the posts that match the name value. Supports exact, contains, icontains, ne lookups.
slugReturns the posts that match a particular slug value.
updatedReturns the posts that match a particular updated time. Supports exact, range, gt, gte, lt, lte lookups.
stateDRAFT, PUBLISHED, or SCHEDULED.
order_byReturn 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.