You can either use route resolve like @maksm suggested, or use stateChangeSuccess and check for localstorage flag like so:
$rootScope.$on('$stateChangeSuccess', (event, toState, toParams, fromState, fromParams) ->
usedAppBefore = localStorageService.getObject('usedAppBefore')
if (usedAppBefore isnt true)
localStorageService.setObject('usedAppBefore', true)
$state.go("App.Walkthrough")
)
In case of authentication something like that
$rootScope.$on('$stateChangeStart', (event, toState, toParams, fromState, fromParams) ->
if !userService.isLoggedIn()
event.preventDefault();
$state.go("App.Tabs.Login", {}, {reload: true})
)