analytics

package
v1.119.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 20, 2024 License: AGPL-3.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// SourceTrialExpiringNotice is the trial expiring notice source.
	SourceTrialExpiringNotice = "trial_expiring_notice"
	// SourceTrialExpiredNotice is the trial expired notice source.
	SourceTrialExpiredNotice = "trial_expired_notice"
)

Variables

View Source
var (
	// Error is the default error class the analytics package.
	Error = errs.Class("analytics service")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	SegmentWriteKey string `help:"segment write key" default:""`
	Enabled         bool   `help:"enable analytics reporting" default:"false"`
	HubSpot         HubSpotConfig
	Plausible       plausibleConfig
}

Config is a configuration struct for analytics Service.

type FreezeTracker added in v1.78.1

type FreezeTracker interface {
	// TrackAccountFrozen sends an account frozen event to Segment.
	TrackAccountFrozen(userID uuid.UUID, email string)

	// TrackAccountUnfrozen sends an account unfrozen event to Segment.
	TrackAccountUnfrozen(userID uuid.UUID, email string)

	// TrackAccountUnwarned sends an account unwarned event to Segment.
	TrackAccountUnwarned(userID uuid.UUID, email string)

	// TrackAccountFreezeWarning sends an account freeze warning event to Segment.
	TrackAccountFreezeWarning(userID uuid.UUID, email string)

	// TrackLargeUnpaidInvoice sends an event to Segment indicating that a user has not paid a large invoice.
	TrackLargeUnpaidInvoice(invID string, userID uuid.UUID, email string)

	// TrackViolationFrozenUnpaidInvoice sends an event to Segment indicating that a user has not paid an invoice
	// and has been frozen due to violating ToS.
	TrackViolationFrozenUnpaidInvoice(invID string, userID uuid.UUID, email string)

	// TrackStorjscanUnpaidInvoice sends an event to Segment indicating that a user has not paid an invoice, but has storjscan transaction history.
	TrackStorjscanUnpaidInvoice(invID string, userID uuid.UUID, email string)
}

FreezeTracker is an interface for account freeze event tracking methods.

type HubSpotConfig added in v1.45.2

type HubSpotConfig struct {
	RefreshToken     string        `help:"hubspot refresh token" default:""`
	TokenAPI         string        `help:"hubspot token refresh API" default:"https://api.hubapi.com/oauth/v1/token"`
	ClientID         string        `help:"hubspot client ID" default:""`
	ClientSecret     string        `help:"hubspot client secret" default:""`
	ChannelSize      int           `help:"the number of events that can be in the queue before dropping" default:"1000"`
	ConcurrentSends  int           `help:"the number of concurrent api requests that can be made" default:"4"`
	DefaultTimeout   time.Duration `help:"the default timeout for the hubspot http client" default:"10s"`
	EventPrefix      string        `help:"the prefix for the event name" default:""`
	SignupFormId     string        `help:"the hubspot form ID for signup" default:""`
	CunoFSBetaFormId string        `help:"the hubspot form ID for cunoFS beta" default:""`
	LifeCycleStage   string        `help:"the hubspot lifecycle stage for new accounts" default:""`
}

HubSpotConfig is a configuration struct for Concurrent Sending of Events.

type HubSpotEvent added in v1.45.2

type HubSpotEvent struct {
	Data     map[string]interface{}
	Endpoint string
	Method   *string
}

HubSpotEvent is a configuration struct for sending API request to HubSpot.

type HubSpotEvents added in v1.45.2

type HubSpotEvents struct {
	// contains filtered or unexported fields
}

HubSpotEvents is a configuration struct for sending Events data to HubSpot.

func NewHubSpotEvents added in v1.45.2

func NewHubSpotEvents(log *zap.Logger, config HubSpotConfig, satelliteName string) *HubSpotEvents

NewHubSpotEvents for sending user events to HubSpot.

func (*HubSpotEvents) EnqueueCreateUserMinimal added in v1.96.2

func (q *HubSpotEvents) EnqueueCreateUserMinimal(fields TrackCreateUserFields)

EnqueueCreateUserMinimal is for creating user in HubSpot using the minimal form.

func (*HubSpotEvents) EnqueueJoinCunoFSBeta added in v1.119.2

func (q *HubSpotEvents) EnqueueJoinCunoFSBeta(fields TrackJoinCunoFSBetaFields)

EnqueueJoinCunoFSBeta is for tracking user join cunoFS beta using hubspot form.

func (*HubSpotEvents) EnqueueUserChangeEmail added in v1.107.1

func (q *HubSpotEvents) EnqueueUserChangeEmail(oldEmail, newEmail string)

EnqueueUserChangeEmail is for sending post-creation information to Hubspot, that the user changed their email.

func (*HubSpotEvents) EnqueueUserOnboardingInfo added in v1.96.2

func (q *HubSpotEvents) EnqueueUserOnboardingInfo(fields TrackOnboardingInfoFields)

EnqueueUserOnboardingInfo is for sending post-creation information to Hubspot, that the user enters after login during onboarding.

func (*HubSpotEvents) Handle added in v1.45.2

func (q *HubSpotEvents) Handle(ctx context.Context, events []HubSpotEvent) (err error)

Handle for handle the HubSpot API requests.

func (*HubSpotEvents) Run added in v1.45.2

func (q *HubSpotEvents) Run(ctx context.Context) error

Run for concurrent API requests.

type LimitRequestInfo added in v1.88.2

type LimitRequestInfo struct {
	ProjectName  string
	LimitType    string
	CurrentLimit string
	DesiredLimit string
}

LimitRequestInfo holds data needed to request limit increase.

type PageViewBody added in v1.103.2

type PageViewBody struct {
	Name      string            `json:"name"`
	Url       string            `json:"url"`
	Props     map[string]string `json:"props"`
	Domain    string            `json:"domain"`
	Referrer  string            `json:"referrer"`
	IP        string            `json:"-"`
	UserAgent string            `json:"-"`
}

PageViewBody is a struct for page view event.

type Service

type Service struct {
	// contains filtered or unexported fields
}

Service for sending analytics.

architecture: Service

func NewService

func NewService(log *zap.Logger, config Config, satelliteName string) *Service

NewService creates new service for creating sending analytics.

func (*Service) ChangeContactEmail added in v1.107.1

func (service *Service) ChangeContactEmail(userID uuid.UUID, oldEmail, newEmail string)

ChangeContactEmail changes contact's email address.

func (*Service) Close

func (service *Service) Close() error

Close closes the Segment client.

func (*Service) CreateContact added in v1.105.2

func (service *Service) CreateContact(fields TrackCreateUserFields)

CreateContact creates a contact in hubspot for a user.

func (*Service) JoinCunoFSBeta added in v1.119.2

func (service *Service) JoinCunoFSBeta(fields TrackJoinCunoFSBetaFields)

JoinCunoFSBeta sends a join cunoFS beta form to hubspot.

func (*Service) PageViewEvent added in v1.103.2

func (service *Service) PageViewEvent(ctx context.Context, pv PageViewBody) error

PageViewEvent sends a page view event to plausible.

func (*Service) PageVisitEvent added in v1.58.1

func (service *Service) PageVisitEvent(pageName string, userID uuid.UUID, email string)

PageVisitEvent sends a page visit event associated with user ID to Segment. It is used for tracking occurrences of client-side events.

func (*Service) Run added in v1.45.2

func (service *Service) Run(ctx context.Context) error

Run runs the service and use the context in new requests.

func (*Service) TrackAccessGrantCreated added in v1.27.0

func (service *Service) TrackAccessGrantCreated(userID uuid.UUID, email string)

TrackAccessGrantCreated sends an "Access Grant Created" event to Segment.

func (*Service) TrackAccountFreezeWarning added in v1.74.1

func (service *Service) TrackAccountFreezeWarning(userID uuid.UUID, email string)

TrackAccountFreezeWarning sends an account freeze warning event to Segment.

func (*Service) TrackAccountFrozen added in v1.74.1

func (service *Service) TrackAccountFrozen(userID uuid.UUID, email string)

TrackAccountFrozen sends an account frozen event to Segment.

func (*Service) TrackAccountUnfrozen added in v1.75.2

func (service *Service) TrackAccountUnfrozen(userID uuid.UUID, email string)

TrackAccountUnfrozen sends an account unfrozen event to Segment.

func (*Service) TrackAccountUnwarned added in v1.76.1

func (service *Service) TrackAccountUnwarned(userID uuid.UUID, email string)

TrackAccountUnwarned sends an account unwarned event to Segment.

func (*Service) TrackAccountVerified added in v1.27.2

func (service *Service) TrackAccountVerified(userID uuid.UUID, email string)

TrackAccountVerified sends an "Account Verified" event to Segment.

func (*Service) TrackCreateUser

func (service *Service) TrackCreateUser(fields TrackCreateUserFields)

TrackCreateUser sends an "Account Created" event to Segment.

func (*Service) TrackCreditCardAdded added in v1.55.1

func (service *Service) TrackCreditCardAdded(userID uuid.UUID, email string)

TrackCreditCardAdded sends an "Credit Card Added" event to Segment.

func (*Service) TrackErrorEvent added in v1.70.1

func (service *Service) TrackErrorEvent(userID uuid.UUID, email, source string)

TrackErrorEvent sends an arbitrary error event associated with user ID to Segment. It is used for tracking occurrences of client-side errors.

func (*Service) TrackEvent added in v1.27.0

func (service *Service) TrackEvent(eventName string, userID uuid.UUID, email string, customProps map[string]string)

TrackEvent sends an arbitrary event associated with user ID to Segment. It is used for tracking occurrences of client-side events.

func (*Service) TrackExpiredCreditNeedsRemoval added in v1.80.3

func (service *Service) TrackExpiredCreditNeedsRemoval(userID uuid.UUID, customerID, packagePlan string)

TrackExpiredCreditNeedsRemoval sends an "Expired Credit Needs Removal" event to Segment.

func (*Service) TrackExpiredCreditRemoved added in v1.80.3

func (service *Service) TrackExpiredCreditRemoved(userID uuid.UUID, customerID, packagePlan string)

TrackExpiredCreditRemoved sends an "Expired Credit Removed" event to Segment.

func (*Service) TrackInviteLinkClicked added in v1.89.2

func (service *Service) TrackInviteLinkClicked(inviter, invitee string)

TrackInviteLinkClicked sends an "Invite Link Clicked" event to Segment.

func (*Service) TrackInviteLinkSignup added in v1.89.2

func (service *Service) TrackInviteLinkSignup(inviter, invitee string)

TrackInviteLinkSignup sends an "Invite Link Signup" event to Segment.

func (*Service) TrackLargeUnpaidInvoice added in v1.74.1

func (service *Service) TrackLargeUnpaidInvoice(invID string, userID uuid.UUID, email string)

TrackLargeUnpaidInvoice sends an event to Segment indicating that a user has not paid a large invoice.

func (*Service) TrackLegalHoldUnpaidInvoice added in v1.93.1

func (service *Service) TrackLegalHoldUnpaidInvoice(invID string, userID uuid.UUID, email string)

TrackLegalHoldUnpaidInvoice sends an event to Segment indicating that a user has not paid an invoice but is in legal hold.

func (*Service) TrackLinkEvent added in v1.27.2

func (service *Service) TrackLinkEvent(eventName string, userID uuid.UUID, email, link string)

TrackLinkEvent sends an arbitrary event and link associated with user ID to Segment. It is used for tracking occurrences of client-side events.

func (*Service) TrackManagedEncryptionError added in v1.114.2

func (service *Service) TrackManagedEncryptionError(userID uuid.UUID, email string, projectID uuid.UUID, reason string)

TrackManagedEncryptionError sends an "Managed Encryption Error" event to Segment.

func (*Service) TrackProjectCreated added in v1.27.0

func (service *Service) TrackProjectCreated(userID uuid.UUID, email string, projectID uuid.UUID, currentProjectCount int, managedPassphrase bool)

TrackProjectCreated sends an "Project Created" event to Segment.

func (*Service) TrackProjectLimitError added in v1.58.1

func (service *Service) TrackProjectLimitError(userID uuid.UUID, email string)

TrackProjectLimitError sends an "Project Limit Error" event to Segment.

func (*Service) TrackProjectMemberAddition added in v1.69.1

func (service *Service) TrackProjectMemberAddition(userID uuid.UUID, email string)

TrackProjectMemberAddition sends an "Project Member Added" event to Segment.

func (*Service) TrackProjectMemberDeletion added in v1.69.1

func (service *Service) TrackProjectMemberDeletion(userID uuid.UUID, email string)

TrackProjectMemberDeletion sends an "Project Member Deleted" event to Segment.

func (*Service) TrackRequestLimitIncrease added in v1.88.2

func (service *Service) TrackRequestLimitIncrease(userID uuid.UUID, email string, info LimitRequestInfo)

TrackRequestLimitIncrease sends a limit increase request to Segment.

func (*Service) TrackSignedIn added in v1.27.0

func (service *Service) TrackSignedIn(userID uuid.UUID, email string)

TrackSignedIn sends an "Signed In" event to Segment.

func (*Service) TrackStorjTokenAdded added in v1.62.1

func (service *Service) TrackStorjTokenAdded(userID uuid.UUID, email string)

TrackStorjTokenAdded sends an "Storj Token Added" event to Segment.

func (*Service) TrackStorjscanUnpaidInvoice added in v1.83.2

func (service *Service) TrackStorjscanUnpaidInvoice(invID string, userID uuid.UUID, email string)

TrackStorjscanUnpaidInvoice sends an event to Segment indicating that a user has not paid an invoice, but has storjscan transaction history.

func (*Service) TrackUserOnboardingInfo added in v1.96.2

func (service *Service) TrackUserOnboardingInfo(fields TrackOnboardingInfoFields)

TrackUserOnboardingInfo sends onboarding info to Hubspot.

func (*Service) TrackUserUpgraded added in v1.101.1

func (service *Service) TrackUserUpgraded(userID uuid.UUID, email string, expiration *time.Time)

TrackUserUpgraded sends a "User Upgraded" event to Segment.

func (*Service) TrackViolationFrozenUnpaidInvoice added in v1.90.1

func (service *Service) TrackViolationFrozenUnpaidInvoice(invID string, userID uuid.UUID, email string)

TrackViolationFrozenUnpaidInvoice sends an event to Segment indicating that a violation frozen user has not paid an invoice.

type TokenData added in v1.67.1

type TokenData struct {
	AccessToken string
	ExpiresAt   time.Time
}

TokenData contains data related to the Hubspot access token.

type TrackCreateUserFields

type TrackCreateUserFields struct {
	ID               uuid.UUID
	AnonymousID      string
	FullName         string
	Email            string
	Type             UserType
	EmployeeCount    string
	CompanyName      string
	StorageNeeds     string
	JobTitle         string
	HaveSalesContact bool
	OriginHeader     string
	Referrer         string
	HubspotUTK       string
	UserAgent        string
	SignupCaptcha    *float64
}

TrackCreateUserFields contains input data for tracking a create user event.

type TrackJoinCunoFSBetaFields added in v1.119.2

type TrackJoinCunoFSBetaFields struct {
	Email                       string `json:"email"`
	CompanyName                 string `json:"companyName"`
	IndustryUseCase             string `json:"industryUseCase"`
	OtherIndustryUseCase        string `json:"otherIndustryUseCase"`
	OperatingSystem             string `json:"operatingSystem"`
	TeamSize                    string `json:"teamSize"`
	CurrentStorageUsage         string `json:"currentStorageUsage"`
	InfraType                   string `json:"infraType"`
	CurrentStorageBackends      string `json:"currentStorageBackends"`
	OtherStorageBackend         string `json:"otherStorageBackend"`
	CurrentStorageMountSolution string `json:"currentStorageMountSolution"`
	OtherStorageMountSolution   string `json:"otherStorageMountSolution"`
	DesiredFeatures             string `json:"desiredFeatures"`
	CurrentPainPoints           string `json:"currentPainPoints"`
	SpecificTasks               string `json:"specificTasks"`
}

TrackJoinCunoFSBetaFields contains input data for tracking a join CunoFS beta event.

type TrackOnboardingInfoFields added in v1.96.2

type TrackOnboardingInfoFields struct {
	ID                     uuid.UUID
	FullName               string
	Email                  string
	Type                   UserType
	EmployeeCount          string
	CompanyName            string
	StorageNeeds           string
	JobTitle               string
	StorageUseCase         string
	OtherUseCase           string
	FunctionalArea         string
	HaveSalesContact       bool
	InterestedInPartnering bool
}

TrackOnboardingInfoFields contains input data entered after first login.

type UserType

type UserType string

UserType is a type for distinguishing personal vs. professional users.

const (
	// Professional defines a "professional" user type.
	Professional UserType = "Professional"
	// Personal defines a "personal" user type.
	Personal UserType = "Personal"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL