Quick Reference

Each event type in Summit Event Language (SEL) and what it does

The easiest way to add events to a model is + Add New by clicking the button or hitting Cmd+K.


For more control, you can type any of the SEL functions listed below into a blank event to bring it to life.

Requests & Response

Events to fetch, parse, and return data.

TypeBehaviorInputOutputExample(s)
RequestsMake a GET or POST request for JSON, HTML, or CSV data.Object to define headers, params, json, cookies, or data.Web request response contents, HTML, CSV, JSON.=Request('get', 'https://api.example.com/x.json')
ProxyUse your authenticated connection to a remote service to make a request.Object to define headers, params, json, cookies, or data.Authenticated request to retrieve content (usually JSON) from a remote service.=Proxy('hubspot', ['PATCH', '/v3/crm/objects/companies/12345678'])
ParserUse a JSONPath expression to parse the output of a Request.JSON, typically returned from a Request.A list of matches.=Parser('$..coordinates.lat')
ResponseCompose the data field of your model's API response.Numbers, strings, text, or JSON.None=Response("foo.bar"),
=Response("myDataList[]")
TableCreate an in-memory table for querying.Remote CSV data or a list of dictionaries.A table reference for use by Query events.=Table("https://sheets.google.com/my.csv") or =Table("contacts")
QueryPerform a SQL query on a Table A Table reference.A list of dictionaries representing the result set.=Query("SELECT * FROM $table WHERE name = 'John Doe'") or =Query("SELECT * FROM contacts WHERE age = 44")

Objects & Arrays

Events to store and send fixed lists or object definitions.

TypeBehaviorInputOutputExample(s)
ArrayDefines a static list to relay to another event.None, statically defined.The entire array as a list.=Array(['peanut butter', 'jelly', 5])
ObjectDefines a literal object using JSON syntax.None, statically defined. You may use liquid syntax within string components of the definition.The object as a dictionary.=Object({"warm": true})

Strings & Text

Events to store or create text.

TypeBehaviorInputOutputExample(s)
StringStores and relays a text string.NoneThe string.=String("Jedi Council")
MatchesFinds all values that match a provided regular expression.A list, a string, or text.A list of matches found within the input.=Matches("\d{1,}")
TextWrite and create long strings of text using liquid syntax.NoneThe text as a string.=Text(""" I am Ishmael. """)

Iterators

When you need to cycle through a list.

TypeBehaviorInputOutputExample(s)
LoopTakes values in the provided order and sends them downstream.A list of values.The provided values, in order.=Loop([1, 4, 3])

Generators

Events that produce numeric or text values when executed.

TypeBehaviorInputOutputExample(s)
AICalls an AI model with a prompt.An AI model, API Key.JSON object for use downstream.=Ai("gpt-4o", "{{ OPENAI_KEY}}")
SearchCalls Tavily's Search API.Search term, phrase, or question.Search result with up to 5 sources cited.=Search("When will Mariah Carey want us to start playing Christmas music this year?")
SourceGenerates a stream of numeric values.NumberA stream of numeric values.=Source(100k)
=Source(100k @ 3%)
=Source(100k...110k @ 3%)
CurveGenerates numeric values based on a specified curve shape.NoneA stream of numeric values.=Curve('s', [365, 1k])
TrendFrom a list of numeric values, generates a trended series of values.NoneA stream of numeric values.=Trend([12.1k,15.5k,13.6k,14.4k])
=Trend([100,300,200,225])
ExtendExtends a list of numeric values using the slope between the last two values of the provided input.NoneA stream of numeric values.=Extend([1,2,3,10])

Containers

Events that store numeric value.

TypeBehaviorExample(s)
PoolCollects numeric values with no limit.=Pool(1.4m)
=Pool(1.4m @ 1%)
PipeRelays numeric values downstream.=Pipe(0)
=Pipe(0, 100)
BucketCollects numeric values up to a specified limit; overflow passes downstream.=Bucket(0, 500)
Tipping BucketCollects numeric values up to a limit; empties when limit is reached.=Tippingbucket(0, 500)
FunnelReleases a specified amount of numeric value from its store each time it is triggered.=Funnel(100k, 200)
GateOpens on a schedule, releasing all of the numeric value it has collected. Any value not sent downstream is retained.=Gate(0)
SiloStores numeric value in a container; container has a minimum and maximum size. Excess value and overdraws are passed downstream.=Silo(100, [-50, 1k])
=Silo(100, [-100,])
WheelStores numeric value in a rotating list that follows a calendar.=Wheel(12)
=Wheel(4, [250, 200, 175, 99])
BaseStores numeric values in a list; sends the sum of those values to downstream events. Second argument specifies retention by cohort.=Base([] @ [95, 65, 54, 32, 23]%)

Code

Events to run code!

TypeBehavior
CodeRun code and print the return value.

Timers

Events to manage time for simulation models.

TypeBehaviorExample(s)
WaitInsert a delay.=Wait(7, 'days')
=Wait(3, 'months')
BlockClose off the flow of values for a certain amount of time.=Block(3, 'months')
=Block(1, 'year')
=Block(14, 'days')
HaltStop the simulation.=Halt()
StopwatchStops the simulation after a specified amount of time.=Stopwatch(3600\<elapsed_time_allowed>)

Transforms

Events to alter a value.

TypeBehaviorExample(s)
TransformModify the value (or list of values) received before relaying it downstream.=T('max')
=T('numbers')
=T('abs')
=T('round')

=T('liters', 'gallons')
=T('yards', 'meters')
=T('kilometers', 'miles')

Conditionals

Events to test values.

EventBehaviorExample(s)
IfTest a value and relay it if True.=If('>', 0)
=If('gte', 5)
OnceTest a value and relay it if True, but only once. False on all subsequent calls.=Once('>', 100k)

Triggers

Events to control the simulated timing of other events.

EventBehaviorExample(s)
EveryCause downstream events to execute on a specific schedule within a simulation model.=Every("0 8,17 * * 1-5"<hours_of_operation>, 'America/Chicago'<timezone>)

Tiering & Scale

Events to split values into arrays to perform matrix multiplication.

EventBehaviorExample(s)
TieringDefine a set of tiers and identify which tier an inputted number belongs to.=Tiering([5, 10, 20])
ScaleDefine breakpoints; given a value, split it into those breakpoints.=Scale([150, 250, 500])