Tools / Sidekick / Docs

Sidekick docs

Everything Sidekick adds to your Maropost cPanel, how to set it up, and a rundown of each feature.

Overview

Yotabyte Sidekick is a free browser extension for Chrome and Firefox that sits on top of Maropost / Neto cPanel and your storefront. It adds a command palette, a right-edge drawer, right-click actions, and live in-page overlays. Nothing it does replaces what Maropost already ships, it fills in the small gaps operators work around every day. The same features are available on both browsers.

Everything lives in your browser. Sidekick never sends data to Yotabyte. The only network calls it makes are to your own Maropost store, with your own API key, and only when a feature you've enabled needs it.

Features are organised as plugins, each with its own settings. A few features need an API key connected; the rest work the moment you install.

Getting started

1. Install

Sidekick runs on Chrome and Firefox, with the same features on both. Add to Chrome →  ยท  Add to Firefox →

2. Register your store

Open any Maropost cPanel (a /_cpanel URL). Sidekick recognises the host and registers it as a store, keeping its quick links, settings, and credentials in a separate bucket per store. If you run sandboxes or a storefront on linked domains, add them so they share the same store.

3. Open the command palette

Press Ctrl + Space anywhere in cPanel to open the palette. Start typing to jump to a page, run a lookup, or trigger an action. The shortcut is configurable (Ctrl + ., Ctrl + Shift + K, or Ctrl + J) in settings. The floating button at the screen edge opens the same drawer if you'd rather click.

4. Connect an API key (optional)

Some features, like the order-margin overlay, read from the Maropost API. Open the API setup tutorial from the drawer and Sidekick walks you through creating a read-only API user and permission group, then captures the key. The key is stored locally and only ever talks to your own store.

Multi-store support

Register every Maropost cPanel you work in. Sidekick keeps quick links, settings, and credentials in a separate bucket per store, so nothing leaks between clients. Linked domains let a store's sandbox and storefront share the same configuration.

Command palette

A keyboard-first palette of verbs that features contribute. Open it with Ctrl + Space and start typing.

  • Jump straight to any cPanel page.
  • Lookups take an argument, e.g. order 12345, product SKU-1, customer jane. Numeric lookups fall through to search when you type a non-numeric term.
  • Actions run a task; toggles flip a setting.
  • Prefix a command with ! to force the staging / linked domain.

Bookmarks

Save any page with a custom label and it becomes a palette command. Use it for the specific orders, products, or reports you keep coming back to, named the way you think of them rather than by URL.

cPanel navigation

Around 290 cPanel pages are mapped to palette commands out of the box, so you can reach almost anything in two keystrokes and a few letters. A refresh caches action rebuilds the page index if Maropost changes underneath you.

Page scrape

Sidekick harvests the dynamic parts of cPanel, the left-nav flyouts and your custom scripts table, into palette commands, then keeps them fresh as the page changes. The result is cached per store so the palette stays fast.

Right-click actions

Context-menu items on cPanel and your linked storefront domains. Highlight a SKU, an order ID, or an email, right-click, and jump straight to the matching record.

Page enhancers

In-page UI that quietly attaches to known cPanel pages: a top strip with the metadata you wish was there, plus inline chips next to the rows you care about. Enhancers stay out of the way on login and auth pages.

Product columns

Sidekick can add extra columns to the Maropost product list. Each column is one of two kinds: a Maropost API field, a hard value fetched per product straight from the product record, or a computed column, a formula Sidekick evaluates on the client from other fields on the same product. You toggle fields on and off from a searchable Columns panel in the product-list filters bar, so you only pull the data you actually want to see.

Custom computed columns use a simple template string with {expr} holes: everything outside the braces is literal text, and each hole is an expression evaluated against the product. For example {round((DefaultPrice-CostPrice)/DefaultPrice*100)}% renders a whole-number markup percentage with a trailing % sign. Expressions reference the field names exactly as they appear in the Field name column of the table below.

The Columns panel

The Columns button lives in the product-list filters bar. Open it for a searchable list of everything you can show: the built-in GP margin column, your own computed columns, every Maropost API field, and Maropost's own native columns. Sidekick reads the native columns straight off Maropost's built-in column customiser, so every column Maropost can toggle appears in the same dropdown alongside Sidekick's, one place to turn any column on or off. (This native-column scraping is on the product list only.)

  • Reorder by dragging a Sidekick column's header left or right.
  • Rename by double-clicking a Sidekick column header and typing a new name. Names are stored per store, and a reset button returns the header to its original label.
  • Active only filters the panel down to the columns you currently have on, so a long list stays manageable.
  • When you build a computed column, a live preview under the formula shows the result against the first row on the page as you type, so you can see a formula working before you add it.

Available fields

Every scalar field below can be added as its own column. Field name is the exact Maropost api_name, use it verbatim in computed-column formulas.

Field nameLabelTypeDescription
IDProduct ID / SKUStringMaropost internal product identifier (the SKU).
ParentSKUParent SKUStringSKU of the parent product for variant grouping.
NameProduct NameStringDisplay name of the product.
BrandBrandStringProduct brand.
ModelModelStringProduct model name.
ModelNumberModel NumberStringManufacturer model number.
SubtitleSubtitleStringSecondary product title.
PrimarySupplierPrimary SupplierStringDefault supplier for the product.
SupplierItemCodeSupplier Item CodeStringSupplier's own code for the item.
OriginCountryCountry of OriginStringCountry the product originates from.
VirtualVirtualBooleanWhether the product is virtual/non-physical.
ApprovedApprovedBooleanWhether the product is approved.
IsActiveActiveBooleanWhether the product is active.
IsNetoUtilityNeto UtilityBooleanWhether it is a Maropost utility/system item.
IsGiftVoucherGift VoucherBooleanWhether the item is a gift voucher.
IsAssetIs AssetBooleanWhether the item is tracked as an asset.
IsServiceItemService ItemBooleanWhether the item is a service (non-stock).
IsVariantIs VariantBooleanWhether the item is a variant of a parent.
IsInventoriedInventoriedBooleanWhether stock is tracked for the item.
IsBoughtIs BoughtBooleanWhether the item is purchasable from suppliers.
IsSoldIs SoldBooleanWhether the item is sold to customers.
SerialTrackingSerial TrackingBooleanWhether serial numbers are tracked.
RRPRRPMoneyRecommended retail price.
DefaultPriceDefault PriceMoneyStandard sell price.
DefaultPurchasePriceDefault Purchase PriceMoneyStandard cost/purchase price.
CostPriceCost PriceMoneyCurrent cost price.
PromotionTagPromotion TagStringLabel/tag for the active promotion.
PromotionPricePromotion PriceMoneyPromotional sell price.
PromotionStartDatePromo StartDatePromotion start date.
PromotionStartDateLocalPromo Start (Local)DatePromotion start date, local time.
PromotionStartDateUTCPromo Start (UTC)DatePromotion start date, UTC.
PromotionExpiryDatePromo ExpiryDatePromotion expiry date.
PromotionExpiryDateLocalPromo Expiry (Local)DatePromotion expiry date, local time.
PromotionExpiryDateUTCPromo Expiry (UTC)DatePromotion expiry date, UTC.
ItemLengthItem LengthNumberPhysical length of the item.
ItemWidthItem WidthNumberPhysical width of the item.
ItemHeightItem HeightNumberPhysical height of the item.
ShippingLengthShipping LengthNumberPackaged shipping length.
ShippingWidthShipping WidthNumberPackaged shipping width.
ShippingHeightShipping HeightNumberPackaged shipping height.
ShippingWeightShipping WeightNumberPackaged shipping weight.
CubicWeightCubic WeightNumberCalculated cubic (volumetric) weight.
HandlingTimeHandling TimeNumberHandling/dispatch time in days.
CommittedQuantityCommitted QtyNumberQuantity committed to open orders.
AvailableSellQuantityAvailable to SellNumberQuantity available to sell across warehouses.
PreOrderQuantityPre-Order QtyNumberQuantity available for pre-order.
PickPriorityPick PriorityNumberWarehouse picking priority.
PickZonePick ZoneStringWarehouse pick zone.
UnitOfMeasureUnit of MeasureStringSelling unit of measure.
BaseUnitOfMeasureBase Unit of MeasureStringBase unit of measure.
BaseUnitPerQuantityBase Units / QtyNumberBase units per selling quantity.
QuantityPerScanQty per ScanNumberQuantity added per barcode scan.
BuyUnitQuantityBuy Unit QtyNumberQuantity per buy unit.
SellUnitQuantitySell Unit QtyNumberQuantity per sell unit.
AccountingCodeAccounting CodeStringAccounting/GL code.
SortOrder1Sort Order 1NumberPrimary sort order.
SortOrder2Sort Order 2NumberSecondary sort order.
DateArrivalDate ArrivalDateExpected stock arrival date.
DateArrivalUTCDate Arrival (UTC)DateExpected arrival date, UTC.
DateAddedDate AddedDateDate the product was added.
DateAddedLocalDate Added (Local)DateDate added, local time.
DateAddedUTCDate Added (UTC)DateDate added, UTC.
DateCreatedLocalDate Created (Local)DateDate created, local time.
DateCreatedUTCDate Created (UTC)DateDate created, UTC.
DateUpdatedDate UpdatedDateLast updated date.
DateUpdatedLocalDate Updated (Local)DateLast updated, local time.
DateUpdatedUTCDate Updated (UTC)DateLast updated, UTC.
SearchKeywordsSearch KeywordsStringKeywords used for on-site search.
ShortDescriptionShort DescriptionStringBrief product description.
DescriptionDescriptionStringFull product description (HTML).
FeaturesFeaturesStringProduct features content.
SpecificationsSpecificationsStringProduct specifications content.
WarrantyWarrantyStringWarranty information.
eBayDescriptioneBay DescriptionStringDescription used for eBay listings.
TermsAndConditionsTerms & ConditionsStringItem terms and conditions.
AvailabilityDescriptionAvailability DescriptionStringText describing stock availability.
ArtistOrAuthorArtist / AuthorStringArtist or author (media items).
FormatFormatStringMedia/product format.
InternalNotesInternal NotesStringInternal staff notes.
ImageURLImage URLStringURL of the primary image.
BrochureURLBrochure URLStringURL of a product brochure.
ProductURLProduct URLStringPublic product page URL.
ItemURLItem URLStringItem URL slug.
AutomaticURLAutomatic URLBooleanWhether the URL is auto-generated.
UPCBarcode / UPCStringPrimary barcode / UPC.
UPC1UPC 1StringAdditional barcode 1.
UPC2UPC 2StringAdditional barcode 2.
UPC3UPC 3StringAdditional barcode 3.
TypeTypeStringProduct type.
SubTypeSub TypeStringProduct sub-type.
ReferenceNumberReference NumberStringInternal reference number.
HSTariffNumberHS Tariff NumberStringHarmonised System customs tariff code.
NumbersOfLabelsToPrintLabels to PrintNumberDefault number of labels to print.
BarcodeHeightBarcode HeightNumberBarcode print height.
EditableKitBundleEditable Kit/BundleBooleanWhether kit/bundle contents are editable.
RequiresPackagingRequires PackagingBooleanWhether the item requires packaging.
SplitForWarehousePickingSplit for PickingBooleanWhether the item is split for warehouse picking.
DisplayTemplateDisplay TemplateStringTemplate used to display the product.
GroupGroupStringProduct group.
ShippingCategoryShipping CategoryStringShipping category assignment.
JobJobStringAssociated job.
MonthlySpendRequirementMonthly Spend RequirementMoneyMinimum monthly spend requirement.
RestrictedToUserGroupRestricted to User GroupStringUser group the item is restricted to.
WhenToRepeatOnStandingOrdersStanding Order RepeatStringRepeat cadence on standing orders.
TaxCategoryTax CategoryEnumTax category assignment.
TaxFreeItemTax FreeBooleanWhether the item is tax free.
TaxInclusiveTax InclusiveBooleanWhether prices are tax inclusive.
AuGstExemptAU GST ExemptBooleanExempt from Australian GST.
NzGstExemptNZ GST ExemptBooleanExempt from New Zealand GST.
CustomContentCustom ContentStringCustom content block.
CustomNonDeliveryCustom Non-DeliveryStringCustom non-delivery content.
SEOPageTitleSEO Page TitleStringSEO page title.
SEOMetaKeywordsSEO Meta KeywordsStringSEO meta keywords.
SEOPageHeadingSEO Page HeadingStringSEO H1/page heading.
SEOMetaDescriptionSEO Meta DescriptionStringSEO meta description.
SEOCanonicalURLSEO Canonical URLStringSEO canonical URL.
ExpenseAccountExpense AccountStringLinked expense account.
PurchaseTaxCodePurchase Tax CodeStringPurchase tax code.
CostOfSalesAccountCost of Sales AccountStringLinked cost-of-sales account.
IncomeAccountIncome AccountStringLinked income account.
AssetAccountAsset AccountStringLinked asset account.

Custom fields (Misc)

In addition to the fields above, every product carries 52 general-purpose custom string fields named Misc01 through Misc52. They hold whatever text your store has mapped to them, so what each one means is specific to your setup. Add any of them as a column, or reference them by name in a computed column, exactly like the fields in the table.

Computed columns

A computed column is a template string. Text outside the braces is printed as-is; each {expr} hole is an expression Sidekick evaluates per product. Expressions support arithmetic + - * / %, string concatenation with +, and reference the field names from the table above. These helper functions are available:

  • round(x, n) — round x to n decimal places (n optional, defaults to a whole number)
  • upper(s) — uppercase a string
  • lower(s) — lowercase a string
  • trim(s) — strip leading and trailing whitespace
  • abs(x) — absolute value
  • number(x) — coerce a value to a number
  • len(s) — length of a string
  • concat(...) — join any number of values into one string
  • date(v, fmt) — format a date value v using pattern fmt

Example formulas:

  • Markup %{round((DefaultPrice-CostPrice)/DefaultPrice*100)}%
  • Margin dollars{round(DefaultPrice-CostPrice, 2)}
  • Brand + model{concat(Brand, ' ', Model)}
  • Added date{date(DateAdded, 'YYYY-MM-DD')}

A formula that can't be worked out (a typo or an unknown field name) shows a small error marker in the cell rather than breaking the row.

Order columns Needs API

The order list gets the same Columns panel as the product list, in its filters bar. Add Maropost GetOrder fields, your own computed columns, and a set of built-in columns to the order lines. Search, drag to reorder, and double-click a header to rename, exactly as on products.

Orders have two levels, and the panel understands both. Order-level fields (and the order margin and RMA columns) render once on the order row; line-level fields render against each line. A master switch at the top of the panel, Show order-line column headers, labels every order's lines and gates the column list, turn it on to start adding columns.

Built-in columns

  • Line margin — this line's profit in dollars and percent.
  • Order margin — the whole order's profit, shown on the order row (see Order margin for how it's calculated).
  • Image — the product's thumbnail on each line, linked through to the product page.
  • RMA — a flag on any order that has a return, linked to the RMA edit page.

On the order lines, each SKU is also a link straight to its product page, so you can jump from an order to a product without a search.

These built-ins draw on the Maropost API, so they need a connected API key (see Getting started). Whatever columns you turn on, Sidekick gathers their data in a single batched, memoised round of API calls per page of the list, rather than one call per column or per row, so adding columns doesn't multiply the requests.

Order margin Needs API

Live dollar and percentage margin on your orders, worked out from each line's cost and sell price. On a single order it appears as a Margin line just below the Grand Total; on the orders list it's the Line margin and Order margin columns you add from the Columns panel. Margins reflect the cost at the moment the order was placed, so they stay stable if prices change later. The badge turns red under 10% so thin orders stand out. Requires a connected API key (see Getting started).

Revenue and margin formulas

How the margin is worked out is two editable settings under Settings → Order margin: a Revenue formula and a Margin formula. Both are evaluated once per order line and summed into the order total, so they read just like a PDP custom field. The revenue formula defines the line's ex-GST revenue; the margin formula defines the dollar margin and can reference that revenue as revenue. Splitting them keeps the dollar figure and the percentage consistent, changing what counts as revenue updates both at once.

The defaults are:

  • RevenueUnitPrice * Quantity - ProductDiscount - Tax
  • Marginrevenue - CostPrice * Quantity

These reconcile against real orders including discounted and GST-inclusive ones: UnitPrice is the GST-inclusive, pre-discount unit price, so subtracting the line's actual Tax and ProductDiscount gives the true ex-GST, post-discount revenue, no dividing by 1.1. ProductDiscount already includes any coupon, so you don't subtract the coupon again. Shipping and other order-level charges aren't line items, so they're naturally left out unless you add them.

Both formulas use the raw Maropost order-line field names. The fields Sidekick currently exposes are:

  • UnitPrice — the price the item sold for, per unit (GST-inclusive on Australian stores)
  • CostPrice — the item's cost at the time of the order, per unit (ex GST)
  • Quantity — units of that line on the order
  • Tax — the GST charged on the line
  • ProductDiscount — product-level discount applied
  • PercentDiscount — percentage discount applied
  • CouponDiscount — coupon discount applied
  • Shipping — shipping charged against the line

These come straight from the Maropost GetOrder API — see its OrderLine section for the full schema. Per unit vs line total: UnitPrice and CostPrice are per unit (multiply by Quantity), whereas Tax is the whole line's GST already — so the default subtracts it once, not per unit. Maropost doesn't document the discount fields and Shipping the same way, so glance at a known order to confirm before relying on them. Want another field wired in? Ask on the feedback board.

Example formulas

With the default revenue formula already handling GST and discounts, most tweaks live in the Margin formula and build on revenue:

  • Allow for a 3% payment feerevenue * 0.97 - CostPrice * Quantity
    Knocks a merchant/processing fee off revenue before margin.
  • Flat handling cost per unitrevenue - CostPrice * Quantity - 2 * Quantity
    Subtracts a fixed $2 handling cost from every unit.
  • Round to centsround(revenue - CostPrice * Quantity, 2)
    Helpers like round and abs are available too.

To change what counts as revenue, edit the Revenue formula instead, for example UnitPrice * Quantity - ProductDiscount - Tax + Shipping to fold shipping into revenue. Because the percentage divides by revenue, the % and the dollar figure stay in step.

The percentage next to the dollar figure is the margin divided by the order's ex-GST revenue, so it's a true gross-margin %. A formula that can't be worked out (a typo, an unknown field) shows a small formula error flag and falls back to the defaults, so the page never breaks.

Lines sold with no cost price

A line that sold but has no cost price set pulls a cost of $0, which makes its margin look like a misleading ~100%. Turn on Flag lines with no cost price in the order-margin settings and Sidekick shows a no cost warning in place of the percentage on those orders, keeping the dollar figure, rather than reporting a margin you can't trust. It's off by default, since a genuine $0 cost can legitimately exist.

Session skip

When cPanel shows the "session in use" interstitial on login, Sidekick can take over the session automatically so you skip the extra click. Toggle it per store in settings.

Settings

Every feature exposes its own settings in one slide-out pane, grouped by feature with a sticky filter input at the top. Toggle anything per store. To turn a whole feature off, switch it off here and its commands and overlays disappear.


Got an idea or hit a snag? Sidekick ships features as plugins and good ideas land fast, request one on the public feedback board.